属性声明疯狂iOS 7

时间:2014-06-22 16:27:20

标签: ios objective-c xcode properties

我最终在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用法都变为未声明.. :(

1 个答案:

答案 0 :(得分:6)

如果同时覆盖属性的setter和getter,编译器将不会自动为您合成支持ivar。您需要进行手动合成,

@synthesize sessionID = _sessionID;