如果使用上面的NSArray方便方法初始化NSMutableArray,你会得到一个NSArray或NSMutableArray吗?
会有什么后果吗?
(我知道NSMutableArray有“arrayWithCapacity:我只是很好奇”
答案 0 :(得分:11)
如果使用以下方式初始化它:
NSMutableArray *array = [NSMutableArray array];
你得到一个NSMutableArray。 Objective-C的一个重要特性是类方法由子类继承。
因此,在类方法中,您可以执行以下操作:
+(id)array {
return [[[self alloc] init] autorelease];
}
和self
将引用代码执行的类对象(NSArray
或NSMutableArray
)。
答案 1 :(得分:4)
更新:虽然我的“自己测试”的建议通常是一个好主意,但在这种情况下,它有点令人高兴。感谢Jim在评论中指出我的建议不适用于这些类,因为各种形式的NSArray都是由CoreFoundation免费桥接类实现的。
-----下面的语境的原始答案-----
回答这样的问题的最简单方法是自己测试。尝试以您想要的方式分配数组,然后从代码中分配NSLog:
NSLog(@“我们得到了一个%@”,NSStringFromClass([theArray class]));