1

我有点不清楚的一件事是这些 NSMutableArray 方法之间的区别:

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];

在幕后,类方法在这里究竟做了什么?它与实例方法有何不同?

干杯,道格

4

1 回答 1

5

类方法创建并自动释放一个 NSMutableArray 对象。

实例方法初始化一个您必须自己分配的对象。您编写的代码实际上不会做任何事情,myMutableArrayInstance因为nil. 类方法大致等价于:

NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];

正如 Peter Hosey 在评论中指出的那样,这确实意味着:

NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
                                           initWithCapacity:WholeLottaData]
                                           autorelease];

initWithCapacity:如果该方法返回不同的对象,这将产生与上述不同的结果。

于 2009-10-21T11:50:44.637 回答