假定有一个车类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;
//}
本文详细解释了在属性语义特性声明为assign、retain、copy时,自动生成的setter和getter方法的内部实现过程。通过具体代码示例,深入探讨了不同语义特性对方法实现的影响。
2792

被折叠的 条评论
为什么被折叠?



