iOS:为什么BOOL属性没有设置?财产价值为零

时间:2014-07-30 13:02:10

标签: ios objective-c

在通知处理程序方法中,我设置了一个BOOL属性(isNotificationCarryingObject),如下所示:

-(void)notificationReceived:(NSNotification *)notification
{
    //set flag depending upon if notification carries an object
    //I tried following:

    //1.
   self.isNotificationCarryingObject = notification.object != nil;
   //result: self.isNotificationCarryingObject = nil

   //2.
   self.isNotificationCarryingObject = notification.object != nil ? YES : NO;
   //result: self.isNotificationCarryingObject = nil

  //3.
  self.isNotificationCarryingObject = YES;
  //result: self.isNotificationCarryingObject = YES ?????

}

使用1.和2.我无法设置标志但使用3.它设置为YES,我不明白为什么?据我所知,所有3个陈述都应该有效。

isNotificationCarryingObject属性定义为:

    @property (nonatomic, assign) BOOL isNotificationCarryingObject;

通知处理程序位于呈现视图控制器内部。在其-viewWillDisappear方法中显示视图控制器发布通知,该方法通过呈现视图控制器来接收。

2 个答案:

答案 0 :(得分:11)

如果你有

BOOL b = NO;

然后你打破程序并执行

po b

你会得到

<nil>

p b 

代替

po代表print object,但bool不是对象,而是基本类型。那些应该用p - 命令打印。

nil对象的地址为0x0,评估为0NO

答案 1 :(得分:-1)

这个怎么样

if(notification.object)
notificationFlag=YES;
else
notificationFlag=NO;

它也可能是您的单原子属性的并发问题。