OC代码
@interface Person : NSObject
@property(nonatomic)NSInteger age;
// @proerty(nonatimic) NSString name;
@end
@implementation Person
@end
使用property优势:
1、编译器自动合成 存取方法,
2、版本兼容,当OC对象新加入一个property,不用编译链接。
因为property早已经计算好偏移量,而直接使用变量则没有这样子的效果,需要重新编译链接才能计算出偏移量。
synthesize作用:目前XCODE7 都不会这么写
@property 声明一个setter getter 方法
@synthesize 实现setter getter 方法
那么我想只要一个getter 或者 setter方法怎么办呢?
使用@dynamic
@interface Person : NSObject{
NSString* _name;
}
@property(nonatomic) NSInteger age;
@property(nonatomic) NSString name;
@end
@implementation Person
@dynamic name;
//- (void) setName:(NSString*) t
//{
// _name = t;
//}
- (NSString*) name
{
return _name;
}
// 省略一万行代码...
// 这里会报错,unrecognized selector sent to instance 0x7b870750'
// 找不到对应的SEL
self.name = @"顶顶顶顶顶";
@end
属性的内存管理语义
strong / weak
assign / copy