版权声明:本文为博主原创文章,未经博主允许不得转载。 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一样