ios - 属性(property)申报疯狂 iOS 7

标签 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 将其标记为错误。

接受任何指针! :)

编辑:我还注意到,在这个类中,如果我添加任何属性访问器方法,它会提示 ivar .. 例如我声明了另一个属性
@property (strong, nonatomic) NSString *userEmail

我添加 -(NSString *)userEmail 的那一刻,它上面的 ivar _userEmail 用法都变得未声明.. :(

最佳答案

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

@synthesize sessionID = _sessionID;

关于ios - 属性(property)申报疯狂 iOS 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353264/

相关文章:

ios - 在不同的 super View 中检测两个 UIView 对象的交集

iphone - 调用 Superview 的 UILongPressGestureRecognizer 而不是 Subview

ios - 无法在iOS中解析推送通知json?

ios - 将NSString附加到NSArray时仅获取一个值

objective-c - 在 Objective-C 和 Cocoa 中,是否有一个函数 debug_print(foobar) 可以打印出变量的名称并转储它的值?

c++ - 网上提交的时候总是说compile errors

ios - 如何在 Objective C 中按数组元素分组

ios - 表格 View 中 2 个不同的可重用单元格的不同高度

iOS - 将 CAGradientLayer 集中到父 UIView

xcode - 为什么我收到此错误无法为模拟器构建应用程序。在 iPhone 11 Pro Max 上启动应用程序时出错?