假定有一个车类Car
.h中定义三个属性
@property (nonatomic, retain) NSString * brand;//品牌
@property (nonatomic, copy) NSString * color;//颜色
@property (nonatomic, assign) CGFloat price;//价格
以下是把属性的语义特性分别声明为assign,retain,copy时, 自动生成setter, getter方法内部实现:
------//当把属性的语义特性声明为retain时,自动生成setter方法内部实现
//- (void)setBrand:(NSString *)brand
//{
// if (_brand != brand) {//如果旧值不等于新值
// [_brand release];//先让旧值release一次引用计数-1
// _brand = [brand retain];//新值copy引用计数+1重新赋值给实例变量
// }
//}
------//当把属性的语义特性声明为retain时,自动生成getter方法内部实现
//- (NSString *)brand
//{
// return [[_brand retain] autorelease];
//}
------//当把属性的语义特性声明为copy时,自动生成setter方法内部实现
//- (void)setColor:(NSString *)color
//{
// if (_color != color) {
// [_color release];
// _color = [color copy];
// }
//}
------//当把属性的语义特性声明为copy时,自动生成getter方法内部实现
//- (NSString *)color
//{
// return [[_color retain] autorelease];
//}
------//当把属性的语义特性声明为assign时,自动生成setter方法内部实现
//- (void)setPrice:(CGFloat)price
//{
// _price = price;
//}
------//当把属性的语义特性声明为assign时,自动生成getter方法内部实现
//- (CGFloat)price
//{
// return _price;
//}