2011-09-16 17 views
0

私は、オブジェクトを返すときにrespondsToSelectorメソッドの戻り値の型を取得できることがわかります。しかし、NSIntegerのようなプリミティブ型を返すとき、 。 NSInteger.T_Tを返す誤ったSELを使ってNSStringを初期化すると、アプリケーションがクラッシュする ここで行うことができるのは、プリミティブ型を返す必要があるときにmakeメソッドがNSNumber値を返すことだけです。私はこれをする必要がありますか?プリミティブ型を返すときにSELの戻り値の型を取得する簡単な方法はありますか?これは、プリミティブ型の値を返すときにrespondsToSelectorメソッドの戻り値型を取得する方法

答えて

0

NSNumberを使用する際の問題点を教えてください。数値の「タイプ」(整数、浮動小数点数)がわかっている場合は、-[NSNumber integerValue]または-[NSNumber floatValue]と呼んで、必要なプリミティブを取得できます。

戻ってくるプリミティブ型がわからない場合は、NSNumberインスタンスのobjCTypeプロパティを使用して、@encode()ディレクティブを含むCスタイルの文字列を取得できます。これらは、Objective-Cデータのエンコード方法を示します。詳細については、Type Encodingを参照してください。

戻ってきたタイプのC文字列に基づいて、NSNumberインスタンス内に実際に格納されているプリミティブタイプに応じて応答し、上記の方法を使用して正しい値を取得できます。

+0

多数のNSNumberを使用するとメモリ使用量が高くなりますか? – Dogstar

+0

それはしないでください。心配している場合はコードをプロファイルする必要がありますが、あらかじめメモリ使用量などについては仮定しないでください:) – LucasTizma

+0

それは私には大いに役立ちます、U ~~~ – Dogstar

関連する問題