初始化NSMutableArray:[NSMutableArray array];

时间:2009-05-09 22:16:14

标签: objective-c cocoa cocoa-touch

如果使用上面的NSArray方便方法初始化NSMutableArray,你会得到一个NSArray或NSMutableArray吗?

会有什么后果吗?

(我知道NSMutableArray有“arrayWithCapacity:我只是很好奇”

2 个答案:

答案 0 :(得分:11)

如果使用以下方式初始化它:

NSMutableArray *array = [NSMutableArray array];

你得到一个NSMutableArray。 Objective-C的一个重要特性是类方法由子类继承。

因此,在类方法中,您可以执行以下操作:

+(id)array {
    return [[[self alloc] init] autorelease];
}

self将引用代码执行的类对象(NSArrayNSMutableArray)。

答案 1 :(得分:4)

更新:虽然我的“自己测试”的建议通常是一个好主意,但在这种情况下,它有点令人高兴。感谢Jim在评论中指出我的建议不适用于这些类,因为各种形式的NSArray都是由CoreFoundation免费桥接类实现的。

-----下面的语境的原始答案-----

回答这样的问题的最简单方法是自己测试。尝试以您想要的方式分配数组,然后从代码中分配NSLog:

NSLog(@“我们得到了一个%@”,NSStringFromClass([theArray class]));