在NSNotification中将int作为“对象”传递

时间:2011-12-02 13:07:56

标签: objective-c cocoa

我正在尝试将int(在枚举中定义)作为NSNotification中的对象发送。

我不能这样做,因为在尝试访问观察者的EXC_BAD_ACCESS方法中的对象时会引发notify:错误,因为int不是输入id(我想?)。

我目前的解决方案是将int转换为NSNumber(使用numberWithInt:)。虽然这样做但感觉不对或干净。

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

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

3 个答案:

答案 0 :(得分:8)

您没有投靠NSNumber ...您正在创建NSNumber对象,并将其内容(或值)设置为int

Objective C对象是你可以在NSNotifications的userInfo词典中传递的,所以你所做的是绝对正确的。

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

答案 1 :(得分:2)

id是对象的通用类型。因此,如果方法需要id,则无法传递int -it而不是对象。数值的最佳对象是NSNumber,所以你正确地做了。

附注:请勿在此处使用“铸造”一词。你不是在施法,而是在创造一个物体。

答案 2 :(得分:0)

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

正如@Michael所说,你没有投射它,你正在创建一个实例。