Javaから来て、私は書いています:
NSObject* obj[] = (NSObject* []) [self getResult];
そして、コンパイラは不平を言いますCast to incomplete type 'NSObject *[]'
オブジェクトをオブジェクトの配列にキャストする適切な方法は何ですか?
ありがとう。
Javaから来て、私は書いています:
NSObject* obj[] = (NSObject* []) [self getResult];
そして、コンパイラは不平を言いますCast to incomplete type 'NSObject *[]'
オブジェクトをオブジェクトの配列にキャストする適切な方法は何ですか?
ありがとう。
言語とライブラリの新しさを認めた場合:通常は、などのコレクションタイプを使用しNSArray
ます。同様に、-getResult
を返しますNSArray
。
また、ObjCでは、型キャストは文字通りNSObject
型ポインターを別の型として渡すことに注意してください。暗黙の昇格はありません(Javaで見られるように)。をにダウンキャストしたい場合はNSObject
、NSArray
を使用できますNSArray * array = (NSArray*)[self getResult];
。繰り返しになりますが、プロモーションはありません。結果が、の場合NSString
でもNSString
、実行時に処理しています。
Tommyの答え(+1)は、NSArray
1つの要素を含むを作成する方法を示しています。最新のコンパイラ機能に依存しない、それを記述する別の方法はですNSArray * array = [NSArray arrayWithObject:[self getResult]];
。
Xcode 4.4以降、単一のオブジェクトを返し、必要なものがオブジェクトの配列であると仮定するとgetResult
、おそらく次のようになります。
NSArray *objects = @[ [self getResult] ];
これにより、結果が何であれ、オブジェクトを 1 つだけ含む (不変の) 配列が作成getResult
されます。
Objective-C では、配列に任意のオブジェクトを含めることができます。特定の型のオブジェクトを保持するために配列を作成することはありません。
組み込みの Array クラスの使用を検討する必要があります。またはNSArray
_NSMutableArray