蘋果在setter方法是這樣做的一個實例變量mainSprocket:爲什麼要在setter方法中將-autorelease發送給我的實例變量,而不是釋放?
– (void)setMainSprocket:(Sprocket *)newSprocket {
[mainSprocket autorelease];
mainSprocket = [newSprocket retain];
return;
}
他們爲什麼要送-autorelease而不是-release?在這裏會有一個不好的結果嗎?實際上它不應該(因爲我的理解),因爲-release只是說實例變量mainSprocket保存的當前對象不再被該實例變量使用。對於其他人仍然對該對象感興趣的情況,該方法可以保留它,對嗎?所以 - 我覺得釋放應該沒問題?
感謝。但是,如果它不是同一個對象,並且我多次調用該方法,是否會遇到與autorelease池有關的問題?因爲該池可能只在應用程序的主要功能中耗盡? – Thanks 2009-04-26 11:25:33
如果您在創建大量對象的函數中,您可以自行排空自動釋放池。 – 2009-04-26 11:29:53