iOS安装程序和Getters和下划线的属性名称
所以我有一个名为description的NSString属性,定义如下:
@property (strong, nonatomic) NSMutableString *description;
当我定义getter时,我可以将其引用为_description,如下所示:
- (NSString *)description { return _description; }
但是,当我定义一个setter时,如下所示:
-(void)setDescription:(NSMutableString *)description { self.description = description; }
它打破了前面提到的getter(未声明的标识符)的描述。 我知道我可以使用self.description代替,但为什么会发生?
@borrrden的回答非常好。 我只是想添加一些细节。
属性实际上只是语法糖。 所以当你声明一个像你这样的财产时:
@property (strong, nonatomic) NSMutableString *description;
它是自动合成的。 这意味着:如果你没有提供你自己的getter + setter(参见borrrden的答案),就会创build一个实例variables(默认情况下它的名字是“underscore + propertyName”)。 而getter + setter是根据你提供的属性描述(强,非primefaces)合成的。 所以当你获得/设置属性时,它实际上等于调用getter或seter。 所以
self.description;
等于[self description]
。 和
self.description = myMutableString;
等于[self setDescription: myMutableString];
因此,当你像你一样定义一个setter:
-(void)setDescription:(NSMutableString *)description { self.description = description; }
它会导致无限循环,因为self.description = description;
来电[self setDescription:description];
。
1) NSObject
已经有一个名为description的方法。 select另一个名字
2)你的setter是一个无限循环
但是至于你的实际问题:如果你不重写这两个方法,编译器将只会自动生成支持variables。
PS不,你不能只是“使用self.description”,因为那么你的getter也将是一个无限循环。
- iPhone – 如何从应用程序中提取ios5的内置字典
- GameWithの日本语サブドメインとiOS Safari Safariのトップヒットについて
- 使用Instagram API上传图片到Instagram
- 在iOS上探索Firebase身份验证
- 计算每个应用的蜂窝数据使用情况
- 是否有可能仅从本地移动应用程序使用来自Facebook的Scores&Achievements API?
- 太多的方法调用的参数,预期1,有2?(Xcode)
- 在Xcode中存档时(从Worklight中)找不到“Cordova / CDVViewController.h”
- 几个UINavigation控制器,每个选项卡一个,从我的应用程序委托出口?