oc __weak和__strong的区别

简介:

1.先上代码



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.由此可见,强引用时对变量拥有,弱引用时只是指向该变量而不拥有。


相关文章
|
安全 iOS开发
iOS中assign和weak修饰符的区别
iOS中assign和weak修饰符的区别
82 0
|
Swift
Swift5.1—强引用循环与weak
Swift5.1—强引用循环与weak
196 0
Swift5.1—强引用循环与weak
|
存储 iOS开发
iOS - weak 与 assign 的区别,weak自动置nil
weak和assign是一种“非拥有关系”的指针,通过这两种修饰符修饰的指针变量,都不会改变被引用对象的引用计数。但是在一个对象被释放后,weak会自动将指针指向nil,而assign则不会。
|
iOS开发
IOS @proporty 关键字(一)retain strong
IOS @proporty 关键字(一)retain strong
89 0
ABAP里的软引用(weak reference)的用法
ABAP里的软引用(weak reference)的用法
100 0
|
iOS开发
【iOS】用strong和weak来修饰成员变量的对比
对于纯代码布局,用@property声明成员变量时,我是很自然的用strong来修饰的。然后突然有人问我用weak来修饰可不可以,我第一反应是不可以,因为用weak来修饰,初始化过后就会被释放掉,就算我第一句写了初始化的方法,立即执行addSubView也是没办法将其添加上去的。
1597 0