内存管理之三——《@property的内存管理》
1.@property中与setter内存管理相关的参数
-
retain : release旧值,retain新值(适用于OC对象类型);
-
assign : 直接赋值,(默认,适用于非OC对象类型);
-
copy : release旧值,copy新值;
2.@property中是否生成setter的参数
-
readonly : 只会生成getter的声明和实现;
-
readwrite : 同时生成setter和getter的声明和实现;
3.@property中与多线程相关的参数
-
nonatomic : 性能高(一般用这个);
-
atomic : 性能低(默认);
4.@property中设置setter和getter名称的使用
-
setter : 设置setter方法的名称,一定要有一个冒号;
-
getter : 设置getter方法的名称(一般用在BOOL类型中,BOOL类型的getter的方法名,一般都是以is开头)
5.循环retain和@class
-
@class的作用:仅仅告诉编译器某个名称是一个类:比如:@class Person;仅仅是告诉编译器Person是一个类(内部细节并不知道);
-
开发中引用一个类的规范:
1.在.h文件中用@class来声明类(不能用#import,否则会出现循环引用的问题);
2.在.m文件中用#import来包含类的所有东西;
-
两端循环引用的解决对策:
1.一端用retain参数(@property中);
2.一端用assign参数(@property中);注意:用了assign,即调用set方法就不会做retain,就不用在dealloc方法中对此对象做release。
时间: 2024-10-24 13:05:29