すべて nil を指す可能性のあるポインターの配列を維持できるようにしたい状況があります。
Equipment *equipment[19];
ただし、オブジェクトのプロパティとしてポインターの配列またはダブルポインターを設定できないことがわかりました。
C スタイルの配列を使用できない場合の回避策は、NSArray オブジェクトを使用することです。だから私は次のようなことをしようとしました:
NSMutableArray *equipment = [NSMutableArray arrayWithCapacity: NUM_EQUIPSLOTS];
for (int i=0; i<NUM_EQUIPSLOTS; i++) {
[equipment setObject: nil atIndexedSubscript: i];
}
ここでのアイデアは、後で何かを指す空のポインターの配列を持っているということです。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(0x246e012 0x1e4be7e 0x2421b6a 0x2421a20 0xebd02 0xde82b 0xc9d5a 0xcb6bd 0x4d525 0xc94fa 0xc8b6a 0xa18157 0xa18747 0xa1994b 0xa2acb5 0xa2bbeb 0xa1d698 0x3176df9 0x3176ad0 0x23e3bf5 0x23e3962 0x2414bb6 0x2413f44 0x2413e1b 0xa1917a 0xa1affc 0xc8526 0x1fa5)
libc++abi.dylib: terminate called throwing an exception
これは、C スタイルの配列と個々のオブジェクトを使用して非常に簡単に実行できることを知っています。次のようなばかげたものよりも、このようにしたいと思います。
Equipment *equipment0 = nil;
Equipment *equipment1 = nil;
Equipment *equipment2 = nil;
// ...
Equipment *equipment18 = nil;
これはおそらく NSArray モデル自体の構造に関係しています。これがなぜなのか、なぜ NSArray に nil オブジェクトを単純に追加または設定できないのか、誰かが説明してくれますか? 前もって感謝します。