2

obj-c(セレクター)にプリミティブを含む可変配列が必要です。これを行うための推奨される方法は何ですか?NSArrayそしてそれらはオブジェクトしか保持できません。

4

4 に答える 4

7

を使用しNSValueて、セレクターまたは必要なその他のプリミティブ型をラップする必要があります。Cocoa では SEL はある種のポインタなので、それ[NSValue valueWithPointer:whatever]を構築し[value pointerValue]て取得するために使用できます。または、一般的に使用できます[NSValue valueWithBytes:&whatever objCType:@encode(SEL)]; これはどのタイプでも機能します。

于 2009-10-08T22:56:41.477 に答える
6

SELオブジェクトの配列を格納する場合、最も簡単な方法は、関数を使用してSELsをsに変換し、それらを。に格納してから、関数を使用してオブジェクトを引き出すときにsに戻すことです。NSStringNSStringFromSelector()NSMutableArraySELNSSelectorFromString()

于 2009-10-08T21:58:56.213 に答える
0

Cスタイルの配列を自分で管理する以外(これは間違いなく最良のオプションではありません、IMO)、唯一のオプションはNSArray/を使用し、を使用NSMutableArrayして数値を格納することNSNumberです。実際の数値型よりも値を取得するのは少し面倒ですが、配列のメモリを自分で管理する必要はありません。

于 2009-10-08T21:49:33.753 に答える
0

プリミティブ型は通常、単なる数値(整数または浮動小数点)またはポインターであるため、目的のためにそれらをラップするために使用されるクラスを使用する場合の問題は何ですか?たとえば、NSMutableArrayの?NSNumbers

于 2009-10-08T21:50:09.653 に答える