oc __weak和__strong的区别

痛定思痛。 2022-06-15 22:41 263阅读 0赞

1.先上代码










1


2


3


4


5


6


7


8


9


10


11


12


13


14


15



id 
weak obj=[[
NSObject 
alloc]init];


    
NSLog
(@
“弱引用自身地址:%p”
,&obj);


    
NSLog
(@
“弱引用指向地址:%p”
,obj);


 


    
id 
strong obj0=[[
NSObject 
alloc]init];


    
id 
__weak obj1=obj0;


    
NSLog
(@
“强引用自身地址:%p”
,&obj0);


    
NSLog
(@
“弱引用自身地址:%p”
,&obj1);


    
NSLog
(@
“强引用指向地址:%p”
,obj0);


    
NSLog
(@
“弱引用指向地址:%p”
,obj1);


    


    
obj1=
nil
;


//    obj0=nil;


    
NSLog
(@
“弱引用销毁时强类型变量指向地址:%p”
,obj0);


    
NSLog
(@
“弱引用销毁时弱类型变量指向地址:%p”
,obj1);

2.运行结果

301623576395026.jpg

3.当强类型变量设为nil时,两个变量都指向空

4.由此可见,强引用时对变量拥有,弱引用时只是指向该变量而不拥有。

发表评论

表情:
评论列表 (有 0 条评论,263人围观)

还没有评论,来说两句吧...

相关阅读

    相关 weak & strong self

    常遇到一个block要使用self,会处理成在外部声明一个weak变量指向self(\_\_weak \_\_typeof(self) weakSelf = self),在bl