如果你像上面那样用NSArray的便捷方法初始化一个NSMutableArray,你会得到一个NSArray还是一个NSMutableArray?
有什么后果吗?
(我知道NSMutableArray上有"arrayWithCapacity:,我只是好奇“)
发布于 2009-05-09 22:22:41
如果使用以下命令对其进行初始化:
NSMutableArray *array = [NSMutableArray array];你会得到一个NSMutableArray。Objective-C的一个很大的特性是类方法由子类继承。
因此,在类方法中,您可以这样做:
+(id)array {
return [[[self alloc] init] autorelease];
}self将引用代码执行的类对象(NSArray或NSMutableArray)。
发布于 2009-05-10 04:37:35
更新:虽然我的建议“自己测试”通常是一个好主意,但在这种情况下,它是有点触发快乐。感谢Jim在评论中指出,我下面的建议不适用于这些类,因为各种形式的NSArray都是由CoreFoundation免费桥接类实现的。
-以下上下文的原始答案
回答这样的问题最简单的方法就是自己测试。尝试以您想要的方式分配数组,然后从您的代码中执行NSLog:
NSLog(@“我们得到了%@",NSStringFromClass(theArray类));
https://stackoverflow.com/questions/844188
复制相似问题