在发送消息之前检查nil

时间:2014-11-26 07:36:58

标签: ios objective-c xcode6 null

我在Xcode 6中遇到了这个问题。如果我在Xcode 5或更低版本中使用它,那就没问题了。

对象会自动实例化,即使它是nil并且无法检查nil

NSString *userID = [DataManager sharedInstance].currentUser.userId;

if (!userID) {
    userID = @"user";
}
[userInfo setObject:userID forKey:LogDataUserIDKey];

这就是我正在做的事情,我在最后一行得到EXE_BAD_ACCESS(code=1, address=0x443b800c)userID被实例化为我附加的屏幕截图。如何检查userID是否为零。我搞不清楚了。请指教。 enter image description here

1 个答案:

答案 0 :(得分:0)

行。我能够解决这个问题。这是因为在User对象中[DataManager sharedInstance].currentUseruserId被声明为实例变量和属性。

@interface User : NSObject <NSCopying>{
NSString *userId; // instance variable
}
@property (nonatomic, retain) NSString * userId;

因此,通过删除实例变量声明并修复了问题。

@interface User : NSObject <NSCopying>
@property (nonatomic, retain) NSString * userId;

但是,我不确定为什么。你们有什么想法吗?