可可触摸.这些NSMutableData方法之间的区别究竟是什么?

dug*_*gla 1 iphone cocoa class-method nsmutablearray instance-method

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

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];
Run Code Online (Sandbox Code Playgroud)

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];
Run Code Online (Sandbox Code Playgroud)

在引擎盖下,这里的类方法究竟是什么?它与实例方法有何不同?

干杯,道格

Kri*_*son 5

类方法创建并自动释放NSMutableArray对象.

实例方法初始化您必须自己分配的对象.你写的代码实际上不会做任何事情,因为myMutableArrayInstancenil.类方法大致相当于:

NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];
Run Code Online (Sandbox Code Playgroud)

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

NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
                                           initWithCapacity:WholeLottaData]
                                           autorelease];
Run Code Online (Sandbox Code Playgroud)

如果initWithCapacity:方法返回不同的对象,它将具有与上面不同的结果.