[英]Cocoa-Touch. What is the semantic difference between class method init versions alloc/init?
[英]Cocoa-Touch. What Exactly is the Difference Between These NSMutableData Methods?
我不清楚的一件事是这些NSMutableArray方法之间的区别:
// Class Method Style
NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];
和
// Instance Method Style
NSMutableData *myMutableDataInstance = nil;
myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];
在后台,类方法实际上在做什么? 它与实例方法有何不同?
干杯,道格
类方法创建并自动释放NSMutableArray对象。
实例方法将初始化您必须自行分配的对象。 您编写的代码实际上不会执行任何操作,因为myMutableArrayInstance
为nil
。 类方法大致等效于此:
NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];
正如彼得·霍西(Peter Hosey)在评论中指出的那样,这实际上意味着:
NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
initWithCapacity:WholeLottaData]
autorelease];
如果initWithCapacity:
方法返回不同的对象,则结果将与上面的结果不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.