来自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 中看到的那样)。如果您想将 an 向下转换NSObject为 an NSArray,则可以使用NSArray * array = (NSArray*)[self getResult];. 同样,没有提升 - 如果结果是 an NSString,那么您仍然在运行时处理 an NSString。
Tommy 的回答 (+1) 演示了如何创建一个NSArray包含一个元素的元素——另一种编写方式,它不依赖于最新的编译器功能是NSArray * array = [NSArray arrayWithObject:[self getResult]];.
假设getResult返回一个对象,而您想要的是一个对象数组,从 Xcode 4.4 开始,您可能会使用:
NSArray *objects = @[ [self getResult] ];
这将创建一个(不可变)数组,其中只包含一个对象——无论结果getResult是什么。
在 Objective-C 中,数组可以包含任何对象;您不会创建数组来保存特定类型的对象。
您应该考虑使用内置的 Array 类。要么NSArray或NSMutableArray