涉及到内存管理,只读,多线程等很多功能时,setter和getter方法也就没那么简单了;当然@property依然强大,很好用;
1:内存管理相关参数:
*:retain: (如果是oc对象类型),生成的setter会自动release旧值,retain新值;
*:assign:(适用于非oc对象) 这个是默认的值
*:copy:release旧值,copy新值;
@property (retain) NSString *name; // 同类型的参数不能同时写 // @property (retain, assign) NSString *name; // 错误写法 // 但是不同类型的可以写一起 @property (retain, readonly) NSString *name;
2:是否生成setter
*:readwrite :同时生成getter和setter 这是默认情况;
*:readonly:只读,只生成getter;
3:多线程管理
*:nonatomic:一般用这个,不加锁的;
*:atomic:(默认)性能低,加锁的;
4:制定setter和getter的方法名:
格式:如果要给setter方法制定方法名一定要加“:”(冒号) @property (setter = abc :) int age;
getter方法就不用了;也可以同时制定;
一般开发中getter方法有时返回的时bool型,一般方法名会制定,以is开头;比如:isRich;
黑马程序员-OC内存管理 @property的增强,布布扣,bubuko.com
原文:http://www.cnblogs.com/cxbblog/p/3721865.html