【发布时间】:2015-08-18 18:45:41
【问题描述】:
我在这里学习教程:http://blog.soff.es/archiving-objective-c-objects-with-nscoding 创建一个可以在回合制游戏中保存我的比赛数据的 NSObject。
但是我在 .m 文件中收到此警告:
Autosynthesized property 'title' will use synthesized instance variable '_title', not existing instance variable 'title'
所以我的问题是如果(在下面的代码中)我删除括号之间的代码会丢失一些重要的东西吗?
@interface Note : NSObject <NSCoding> {
NSString *title;
NSString *author;
BOOL published;
}
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *author;
@property (nonatomic) BOOL published;
@end
【问题讨论】:
-
据我所知,只要照顾得当,不会有任何问题。
-
如果需要访问title的getter和setter方法,需要使用@prop *title。
-
是的。这是多余的。您正在遵循一个非常古老的教程,当时,这被认为是编码的方式。现在 ivars 和 properties 有不同的用途。见stackoverflow.com/questions/843632/…
-
这不是多余的,它是一个可以让你头疼的大陷阱。例如,此代码创建一个带有匹配实例变量 _title 的属性标题,以及一个名为 title 的完全不相关的实例变量。所以 self.title = @"this";并且 title = @"that" 设置了两个不同的实例变量。
标签: ios objective-c nsobject nscoding