------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、ARC下循环引用问题
Person.h
#import<Foundation/Foundation.h>@classDog;
@interfacePerson : NSObject//dog是strong 强指针
@property(nonatomic,strong)Dog *dog;@end
Dog.h
#import<Foundation/Foundation.h>
@classPerson;
@interfaceDog : NSObject
//狗的主人也是strong 强指针
@property(nonatomic,strong)Person *owner;@end
main.m
Person*p = [Person new];Dog *d =[Dog new];
当p.dog = d后,仍然能够正常释放
当增加d.owner =p;时形成循环引用
造成循环引入
解决方案:
循环引入的对象中其中一个对象设置为strong另一个设置为weak
2、ARC下@property参数
ARC中的@property
strong : 用于OC对象,相当于MRC中的retain
weak : 用于OC对象,相当于MRC中的assign
assign : 用于基本数据类型,跟MRC中的assign一样
copy : 一般用于NSString,跟MRC中的copy一样 在ARC情况下解决”循环retain”的问题:@property一边用strong,一边用weak。