我正在尝试将int
(在枚举中定义)作为NSNotification
中的对象发送。
我不能这样做,因为在尝试访问观察者的EXC_BAD_ACCESS
方法中的对象时会引发notify:
错误,因为int
不是输入id
(我想?)。
我目前的解决方案是将int转换为NSNumber
(使用numberWithInt:
)。虽然这样做但感觉不对或干净。
所以问题是:将一个int作为NSNotification的“对象”传递的正确方法是什么?
我想这实际上与这个具体案例无关,但一般来说是Cocoa: - )
答案 0 :(得分:8)
您没有投靠NSNumber
...您正在创建NSNumber
对象,并将其内容(或值)设置为int
。
Objective C对象是你可以在NSNotifications的userInfo
词典中传递的,所以你所做的是绝对正确的。
现在关于崩溃,请修改您的问题,以显示有关如何创建和发布NSNotification
的代码以及实际处理您发送的已接收NSNotification
的方法。
答案 1 :(得分:2)
id
是对象的通用类型。因此,如果方法需要id
,则无法传递int -it而不是对象。数值的最佳对象是NSNumber,所以你正确地做了。
附注:请勿在此处使用“铸造”一词。你不是在施法,而是在创造一个物体。
答案 2 :(得分:0)
正确的方式,创建一个NSNumber实例并传递它。
正如@Michael所说,你没有投射它,你正在创建一个实例。