NSMutableData 方法“initWith”和“dataWith”有什么区别?

问题描述 投票:0回答:1

我不清楚这些

NSMutableData
方法之间的区别:

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData
                                        dataWithLength:WholeLottaData];

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

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

在幕后,类方法到底在做什么?它与实例方法有什么不同?

干杯, 道格

cocoa initialization class-method instance-methods nsmutabledata
1个回答
5
投票

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

实例方法初始化一个您必须自己分配的对象。您编写的代码实际上不会执行任何操作,因为

myMutableArrayInstance
nil
。 类方法大致相当于这样:

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

正如 Peter Hosey 在评论中指出的那样,它的真正含义是:

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

如果

initWithCapacity:
方法返回不同的对象,将会得到与上面不同的结果。

© www.soinside.com 2019 - 2024. All rights reserved.