obj-c(セレクター)にプリミティブを含む可変配列が必要です。これを行うための推奨される方法は何ですか?NSArray
そしてそれらはオブジェクトしか保持できません。
4 に答える
を使用しNSValue
て、セレクターまたは必要なその他のプリミティブ型をラップする必要があります。Cocoa では SEL はある種のポインタなので、それ[NSValue valueWithPointer:whatever]
を構築し[value pointerValue]
て取得するために使用できます。または、一般的に使用できます[NSValue valueWithBytes:&whatever objCType:@encode(SEL)]
; これはどのタイプでも機能します。
SEL
オブジェクトの配列を格納する場合、最も簡単な方法は、関数を使用してSEL
sをsに変換し、それらを。に格納してから、関数を使用してオブジェクトを引き出すときにsに戻すことです。NSString
NSStringFromSelector()
NSMutableArray
SEL
NSSelectorFromString()
Cスタイルの配列を自分で管理する以外(これは間違いなく最良のオプションではありません、IMO)、唯一のオプションはNSArray
/を使用し、を使用NSMutableArray
して数値を格納することNSNumber
です。実際の数値型よりも値を取得するのは少し面倒ですが、配列のメモリを自分で管理する必要はありません。
プリミティブ型は通常、単なる数値(整数または浮動小数点)またはポインターであるため、目的のためにそれらをラップするために使用されるクラスを使用する場合の問題は何ですか?たとえば、NSMutableArray
の?NSNumbers