考慮這行代碼,數據是一個方法的參數:快速Objective-C的問題
myVar = [[NSMutableData data] retain];
我不能完全肯定這是怎麼回事,但我認爲這是分配myVar的中包含的數據數據,增加它的引用計數。有人可以證實或否認這一點?謝謝!的原代碼
來源snippet-見清單1:Apple Dev Article
考慮這行代碼,數據是一個方法的參數:快速Objective-C的問題
myVar = [[NSMutableData data] retain];
我不能完全肯定這是怎麼回事,但我認爲這是分配myVar的中包含的數據數據,增加它的引用計數。有人可以證實或否認這一點?謝謝!的原代碼
來源snippet-見清單1:Apple Dev Article
[NSMutableData data]將返回一個自動釋放的對象(便捷方法)。
因此,噹噹前運行循環的自動釋放池被耗盡時它會自動釋放。
你保留它來防止這種...
那你確定你有一個有效的指向對象。 這是正確的,只是不要忘了釋放它,當你不需要它了......
編輯
例如:
[ [ [ [ [ [ NSData data ] retain ] release ] autorelease ] retain ];
保留計數爲2時,自動釋放一個對象不會改變保留計數... 但是該對象在當前的自動釋放池中放置了兩次,所以它將在下一次放出時釋放兩次...
您正在使用NSMutableData的新實例的便捷方法,然後將其保留你的初始化變量myVar的。
它與myVar = [[NSMutableData alloc] init];
基本相同,因爲您仍然保留它。
在上面,「data」是一個返回類NSMutableData的新對象的類方法。由於「數據」不是隱含其返回對象所有權的方法之一,因此調用該對象的「保留」方法來建立所有權。現在,調用者負責在完成對象時放棄其所有權聲明。
謝謝,剩下的一個問題:NSMutableData之後的單詞數據的意義是什麼? – 2011-03-22 01:11:16
這是類方法的名稱:+(NSData)數據。在其他語言中也稱爲靜態方法。 – Macmade 2011-03-22 01:13:39
@Macmade:實際上,Objective-C *中的類方法並不類似於靜態方法。 – jlehr 2011-03-22 03:08:12