[英]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.