NSMapTable
私は最近、従来のコレクションのように機能するやのようなこれらのクラスを発見しましNSPointerArray
たが、弱い参照や単純な古い C ポインターも格納できます。残念ながら、for...in
構文を使用して非NSObject
ポインターを反復処理することはできないようです。例えば:
typedef struct Segment {
CGPoint bottom, top;
} Segment;
...
NSPointerArray *segments = [[NSPointerArray alloc]
initWithOptions:NSPointerFunctionsOpaqueMemory];
...
Segment *s = malloc(sizeof(Segment));
[segments addPointer: s];
...
for (Segment *s in segments) { // nope...
コンパイラは最後の行が好きではありません。エラー:
セレクター要素タイプ 'Segment *' (別名 'struct Segment *') は有効なオブジェクトではありません
それで、私はこれをする必要がありますか?
for (int i=0, len=segments.count; i<len; i++) {
Segment *seg = [segments pointerAtIndex:i];
...
それは世界の終わりではありませんが、確認したいだけです。