2011-12-02 5 views
0

NSNotificationのオブジェクトとしてint(列挙型で定義されています)を送信しようとしています。NSNotificationで「オブジェクト」としてintを渡す

intはタイプ idではないので、私は、観察者の notify:方法でオブジェクトにアクセスしようとしたときにスロー EXC_BAD_ACCESSエラーが発生しますので、私は、これを行うことはできません

(と思います?)。

私の現在の解決方法は、NSNumberにintをキャストすることです(numberWithInt:を使用)。これが動作している間、それは正しいか清潔ではないと感じます。

NSNotificationの「オブジェクト」としてintを渡す正しい方法は何ですか?

私は、これは実際にこの特定のケースとは何の関係もないと思いますが、一般:-)でココアの事あなたがNSNumberにキャストしていない

+0

あなたの質問は何ですか? – Eimantas

+0

オブジェクト?または、userInfo? – EmptyStack

+0

申し訳ありませんが明確でない場合は、質問を更新しました。 @エンプティ:オブジェクトではなく、userInfo – altschuler

答えて

8

...あなたはNSNumberオブジェクトを作成していると設定あなたのintにその内容(または値)を入力してください。

Objective CオブジェクトはNSNotificationのuserInfo辞書に渡すことができるものなので、あなたがしていることは絶対に正しいです。

クラッシュについては、NSNotificationの作成方法と投稿方法に関するコードを表示し、受信したNSNotificationを実際に処理する方法を教えてください。

+0

それはちょっと私にはちょっと奇妙なようです。しかし、皆にお返事いただきありがとうございます。彼が最初だったのでマイケルズを受け入れる。キャスティングについて真実、それについて考えなかった:-) – altschuler

2

idは、オブジェクトの汎用タイプです。したがって、メソッドがidを予期している場合は、オブジェクトではなくint -itを渡すことはできません。数値の最適なオブジェクトはNSNumberなので、正しく実行します。

サイドノート:「キャスティング」という用語はここでは使用しないでください。あなたはキャスティングではなく、オブジェクトを作成しています。

0

あなたがやっていることを正しい方法で、NSNumberインスタンスを作成して渡します。

@Michaelは言うとおり、あなたはそれをキャストしていません。インスタンスを作成しています。

関連する問題