有人可以解釋這兩者之間的區別,第一個是允許xcode自動生成聲明,最後一個來自Aaron Hillegass的「Cocoa Programming」中的一個例子。返回對象指針的差異?
- (NSString*)planetName {
return [[planetName retain] autorelease];
}
。
- (NSString*)planetName {
return planetName;
}
我只是好奇,怎麼回事,我的理解是,該方法返回一個指針nil或者現有的字符串對象。我不明白保留並添加到autorelease池的原因?
繼不理解究竟爲什麼會導致爲這些新的可可神祕墜毀的第二圖案。遵循第一種模式[防禦],之後優化可能會更有成效。 – bbum 2009-09-02 16:24:07
如果我添加了一個dealloc方法來做一個[planetName發佈]的類會構成「更明智的內存管理」,並允許我安全地使用較短的「return planetName;」?我已經擁有了這些,我想我可能會感到困惑和*管理,我知道同樣不好。 – fuzzygoat 2009-09-02 16:30:40
基本理念是「對象所有權」 - 您想要選擇一個擁有「planetName」的對象並追蹤該對象內的保留/釋放調用。我會推薦bbum關於內存管理的鏈接 - 它可能需要一點時間才能完成,但這是一個很好的資源,並且需要很長時間。 – fbrereto 2009-09-02 16:38:39