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.运行结果
3.当强类型变量设为nil时,两个变量都指向空
4.由此可见,强引用时对变量拥有,弱引用时只是指向该变量而不拥有。