ARC下OC对象使用assign和使用weak的区别

来源:互联网 发布:微信版邀请函制作软件 编辑:程序博客网 时间:2024/05/23 21:33

  面试总会被问到这个问题,但是自己一直没有真正的测试过。在ARC下使用wek  对象被释放后,指向对象的指针就会变成空指针,后面在调用相关的对象方法不会出现异常


@interface ViewController ()  @property(weak,nonatomic)Persion *p;@property(weak,nonatomic)BOOK *b;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];                _p =  [[Persion alloc] init];          _b = [[BOOK alloc]init];        _p.book = _b;    _b.p = _p; }

如果将weak换成assign的话  在
_p.book = _b;
这行代码有很大的几率会报野指针异常,但是也有不报异常的时候
assign是指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能就会产生野指针;而weak一旦不进行使用后,永远不会使用了,就不会产生野指针

0 0