Objective c 将int传递为;“对象”;在通知中

Objective c 将int传递为;“对象”;在通知中,objective-c,cocoa,Objective C,Cocoa,我试图发送一个int(在枚举中定义)作为NSNotification中的对象 我不能这样做,因为我在尝试访问观察者的notify:方法中的对象时会抛出EXC\u BAD\u ACCESS错误,因为int不是id类型(我想是?) 我当前的解决方案是将int转换为NSNumber(使用numberwhithint:)。虽然这样做有效,但感觉不好或不干净 所以问题是:传递int作为NSNotification的“对象”的正确方法是什么 我想这实际上与这个具体的案例无关,但一般来说,这是一件好事:-)你

我试图发送一个
int
(在枚举中定义)作为
NSNotification
中的对象

我不能这样做,因为我在尝试访问观察者的
notify:
方法中的对象时会抛出
EXC\u BAD\u ACCESS
错误,因为
int
不是
id
类型(我想是?)

我当前的解决方案是将int转换为
NSNumber
(使用
numberwhithint:
)。虽然这样做有效,但感觉不好或不干净

所以问题是:传递int作为NSNotification的“对象”的正确方法是什么


我想这实际上与这个具体的案例无关,但一般来说,这是一件好事:-)

你没有投到
NSNumber
。。。您正在创建一个
NSNumber
对象,并将其内容(或值)设置为
int

而Objective C对象是您可以在NSNotifications的
userInfo
字典中传递的对象,因此您所做的是绝对正确的


现在,关于崩溃,请编辑您的问题,以显示有关如何创建和发布
NSNotification
的代码,以及实际处理您发送的
NSNotification
的方法。

id
是对象的通用类型。因此,如果该方法需要一个
id
,则不能传递int-它不是对象。数值的最佳对象是NSNumber,因此您的操作是正确的


旁注:这里不要使用“铸造”一词。您不是在强制转换,而是在创建一个对象。

按照正确的方式,创建一个NSNumber实例并传递它


正如@Michael所说,你不是在铸造它,你是在创建一个实例。

如果不清楚,很抱歉,更新了问题@空:对象,不是userInfoHm,好吧。我只是觉得有点奇怪。但是谢谢大家的回答。从迈克尔第一次来就接受了他。关于演员阵容,我没有想到:-)