Objective-Cのプリミティブ配列
-
20-09-2019 - |
質問
私はOBJ-C(セレクター)中のプリミティブと可変配列を持っていると思います。これを実行するための推奨方法は何ですか? NSArray
及びそれらはオブジェクトのみを保持することができます。
解決
あなたは、セレクタまたはあなたが必要とする他のプリミティブ型をラップするNSValue
を使用する必要があります。ココアSELでは、ポインタのいくつかの種類であるので、あなたはそれを得るためにそれと[NSValue valueWithPointer:whatever]
を構築するために[value pointerValue]
を使用することができます。または、一般的に、あなたは[NSValue valueWithBytes:&whatever objCType:@encode(SEL)]
を使用することができます。これは、任意のタイプのために働くます。
他のヒント
SEL
オブジェクトの配列を格納する場合は、、最も簡単な方法は、SEL
機能を使用してNSString
sにNSStringFromSelector()
sを変換NSMutableArray
に保存し、その後、あなたがSEL
を使用してそれらを引き出したときNSSelectorFromString()
sに戻ってそれらを変換することです機能ます。
(IMO、間違いなく最高のオプションではありません)Cスタイルの配列を自分で管理する以外にも、あなたの唯一のオプションはNSArray
/ NSMutableArray
を使用し、NSNumber
を使用して数値を格納することです。これは、実際の数値型と比べて外れ値を取得するには少し迷惑なんだが、それは自分で配列のメモリを管理するからあなたを自由にします。
プリミティブ型は、一般的に数字だけ(彼らは、整数または浮動小数点こと)またはポインタなので、自分の目的のためにをラップするために使用するクラスを使用しての問題点は何ですか?例えばNSMutableArray
のNSNumbers
、?