ios 内存管理的理解(四)ARC下循环引用问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zl18603543572/article/details/87869519

案例 一个人拥有一只狗,一只狗拥有一个主人。

@interface Person :NSObject

@property(nonatomic,strong) Dog* dog;
@end
@interface Dog :NSObject

@property(nonatomic,strong) Person* person;
@end
 Person *p=[Person new];
 Dog * d=[Dog new];
 d.person=p;
 p.dog = d;

上述代码块会行成循环引用问题

解决方法:一端用strong,一端用weak。

@interface Person :NSObject

@property(nonatomic,strong) Dog* dog;
@end


@interface Dog :NSObject

@property(nonatomic,weak) Person* person;
@end
ARC中的@property参数
strong : 用于OC对象, 相当于MRC中的retain
weak : 用于OC对象, 相当于MRC中的assign
assign : 用于基本数据类型, 跟MRC中的assign一样
copy : 一般用于NSString, 跟MRC中的copy一样

猜你喜欢

转载自blog.csdn.net/zl18603543572/article/details/87869519