以 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 的创建方式有什么不同吗?