【发布时间】:2012-06-05 22:08:53
【问题描述】:
以 NSMutableArray 为例:
NSMutableArray* a1 = [[NSMutableArray alloc] initWithCapacity:10];
NSMutableArray* a2 = [NSMutableArray arrayWithCapacity:10];
在手动引用计数下,第二行返回了一个自动释放的对象。现在启用 ARC,第二个返回 __autoreleasing 对象而另一个不返回吗?有什么区别,如果有的话?
如果我正在初始化的类是一个已转换为 ARC 的自定义类,其中的转换从初始化程序中删除了自动释放消息:
MyClass b1 = [[MyClass alloc] initWithNumber:1];
MyClass b2 = [MyClass myClassWithNumber:1];
// MyClass implementation of myClassWithNumber
+(id) myClassWithNumber:(int)num
{
return [[self alloc] initWithNumber:num];
}
b1和b2有什么区别,和a1和a2的创建方式有什么不同吗?
【问题讨论】:
-
这个问题可能是相关的,尽管从性能角度来看:Objective-C: With ARC, what's better? alloc or autorelease initializers?
标签: objective-c automatic-ref-counting alloc