A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a380vs747` 中级黑马   /  2015-3-25 11:02  /  744 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、最简单的set、get方法
  1. // 声明
  2. @interface Student : NSObject
  3. {
  4.     int _age;
  5. }
  6. - (void)setAge:(int age);
  7. - (int)age;
  8. @end
  9. // 实现
  10. @implementation Student
  11. - (void)setAge:(int age)
  12. {
  13.         _age = age;
  14. }
  15. - (int)age
  16. {
  17.         return _age;
  18. }
  19. @end
复制代码

2、当set方法需要过滤参数时,set方法的实现可以加入过滤代码
  1. - (void)setAge:(int age)
  2. {
  3.         if (age <= 0)
  4.         age = 1;
  5.         _age = age;
  6. }
复制代码

3、利用@property和synthesize
  1. // 声明
  2. @interface Student : NSObject
  3. {
  4.     int _age;      
  5. }
  6. @property int age;// 可以省略上面的属性变量声明
  7. @end
  8. // 实现
  9. @implementation Student
  10. @synthesize age = _age; // 可以省略,只要@property就可以。也可以省略 = _age。
  11. @end
复制代码

简单点在类的声明里
@property int age; //自动生成_age变量,并在类的实现里生成setter和getter方法。
4、内存管理,非ARC机制下,需要手动retain和release
  1. @property (retain) NSString *name;
  2. // 会自动在类的实现中生成如下方法
  3. - (void)setName:(NSString *name)
  4. {
  5.         if (_name != name)
  6.         {
  7.                 [_name release];
  8.                 _name = [name retain];
  9.         }
  10. }
复制代码

5、property的属性
内存管理的相关参数:
1) retain: release旧值,retain新值(适用于oc对象)
2) assign:直接赋值(默认的,适用于非oc对象,比如int类型、结构体)
3)copy : release旧值,copy新值
是否生成set方法:
1)readwrite:同时生成setter和getter方法和实现(默认)
2)readonly:只生成getter方法和实现
多线程管理:
1)nonatomic:性能高,一般用这个
2)atomic:性能低(默认)

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马