1、最简单的set、get方法
- // 声明
- @interface Student : NSObject
- {
- int _age;
- }
- - (void)setAge:(int age);
- - (int)age;
- @end
- // 实现
- @implementation Student
- - (void)setAge:(int age)
- {
- _age = age;
- }
- - (int)age
- {
- return _age;
- }
- @end
复制代码
2、当set方法需要过滤参数时,set方法的实现可以加入过滤代码
- - (void)setAge:(int age)
- {
- if (age <= 0)
- age = 1;
- _age = age;
- }
复制代码
3、利用@property和synthesize
- // 声明
- @interface Student : NSObject
- {
- int _age;
- }
- @property int age;// 可以省略上面的属性变量声明
- @end
- // 实现
- @implementation Student
- @synthesize age = _age; // 可以省略,只要@property就可以。也可以省略 = _age。
- @end
复制代码
简单点在类的声明里
@property int age; //自动生成_age变量,并在类的实现里生成setter和getter方法。
4、内存管理,非ARC机制下,需要手动retain和release
- @property (retain) NSString *name;
- // 会自动在类的实现中生成如下方法
- - (void)setName:(NSString *name)
- {
- if (_name != name)
- {
- [_name release];
- _name = [name retain];
- }
- }
复制代码
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:性能低(默认) |
|