我最终在iOS类中使用属性声明。在我的.h文件中,我有以下声明:
@property (strong, nonatomic)NSString *sessionID;
在我的.m文件中,我有这段代码:
- (void)setSessionID:(NSString *)aSessionID
{
_sessionID = aSessionID;
// Custom code to set this in a global context
}
这一切都很好并且编译没有任何问题。现在我需要让sessionID返回一个默认值,如果没有设置,但是当我添加这一行时:
- (NSString *)sessionID
{
return _sessionID ? _sessionID : @"defaultSession";
}
然后是setSessionID中的第一行:
_sessionID = aSessionID;
导致错误“使用未声明的函数_sessionID。你的意思是aSessionID”,我在我的智慧结束时找出导致它的原因..我有很多带变量的类,以前从未见过这个...是什么导致了这个?我重新启动Xcode,清理了项目,没有运气..如果我删除 - (NSString *)sessionID方法,那么它就会停止抱怨..但是当我添加方法声明时,Xcode将其标记为错误。
Anypointers接受了! :)
编辑:我也注意到,在这个课程中,如果我添加任何属性访问器方法,它会抱怨ivar ...例如我宣布了另一个属性
@property (strong, nonatomic) NSString *userEmail
我添加的那一刻 - (NSString *)userEmail,上面的ivar _userEmail用法都变为未声明.. :(
答案 0 :(得分:6)
如果同时覆盖属性的setter和getter,编译器将不会自动为您合成支持ivar。您需要进行手动合成,
@synthesize sessionID = _sessionID;