Objective c 关于在目标C中创建私有setter的警告
我在类的接口文件Account.h中声明了两个属性Objective c 关于在目标C中创建私有setter的警告,objective-c,ios,Objective C,Ios,我在类的接口文件Account.h中声明了两个属性 @interface Account : NSObject { NSString* username; NSString* password; } @property (readonly) NSString* username; @property (readonly) NSString* password; @end 我在其实现文件Account.m中创建了私有setter @interface Account()
@interface Account : NSObject {
NSString* username;
NSString* password;
}
@property (readonly) NSString* username;
@property (readonly) NSString* password;
@end
我在其实现文件Account.m中创建了私有setter
@interface Account()
@property (copy, readwrite) NSString* username;
@property (copy, readwrite) NSString* password;
@end
但是,在实现文件的上面两行中,我从XCode(v3.x)得到了警告。这就是警告
warning: property 'username' attribute in 'Account' class continuation does not match class 'Account' property
为什么XCode会发出此警告。这些警告遍布我的项目。我遗漏了什么吗?您还必须在.h文件中包含
copy
说明符:
@property (copy, readonly) NSString* username;
@property (copy, readonly) NSString* password;
您还必须在.h文件中包含
copy
说明符:
@property (copy, readonly) NSString* username;
@property (copy, readonly) NSString* password;
但是根据接口文件,setter不存在。对吗?所以,把“副本”放在那里有点奇怪。是的,看起来很奇怪。但是如果省略
copy
,默认值为assign
,并且以后不能使用copy
或retain
覆盖现有的assign
声明。谢谢。成功了。但是我不明白为什么objectiveC应该给出一个默认的写入策略(assign),当我只是为读者请求时。但是根据接口文件,setter不存在。对吗?所以,把“副本”放在那里有点奇怪。是的,看起来很奇怪。但是如果省略copy
,默认值为assign
,并且以后不能使用copy
或retain
覆盖现有的assign
声明。谢谢。成功了。但我不明白为什么objectiveC应该给出一个默认的写作策略(assign),当我只是为读者提问时。