在通知处理程序方法中,我设置了一个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方法中显示视图控制器发布通知,该方法通过呈现视图控制器来接收。
答案 0 :(得分:11)
如果你有
BOOL b = NO;
然后你打破程序并执行
po b
你会得到
<nil>
做
p b
代替
po
代表print object
,但bool不是对象,而是基本类型。那些应该用p
- 命令打印。
nil
对象的地址为0x0
,评估为0
或NO
。
答案 1 :(得分:-1)
这个怎么样
if(notification.object)
notificationFlag=YES;
else
notificationFlag=NO;
它也可能是您的单原子属性的并发问题。