2013-05-30 51 views
0

我正在解析xml提要(使用NSXML解析器),我需要創建一堆相同的對象foo,然後將這些對象添加到NSMutableArray。我的問題涉及內存管理,而我嘗試這一點。目標中的工廠方法c

正如我所看到的,我的兩個選擇是: 1)創建一個工廠方法,根據需要創建對象。這是我的工廠方法,我在xml解析器中添加了這個方法。

+ (id)create_foo 
{ 
return [[foo alloc] init]; 
} 

2)我有自動引用計數。所以我在想,我可以在xml解析器中創建一個foo對象作爲實例變量,並在我需要創建新的foo對象時讓自動內存管理負責釋放對象。因此,在NSXML解析器的didStartelement方法中,

if ([elementName isEqualToString:@"new_foo"]) 
{ 
    current_foo = [foo alloc]; 
} 

哪種更有效?第二種選擇似乎工作較少,但我擔心自動引用計數。有第三種選擇嗎?

回答

0

您是否有可識別的性能瓶頸?如果不是,請不要擔心。

如果你使用ARC,編譯器/運行庫將盡可能優化autorelease的使用(包括工廠方法)。

+0

我收到'開發者工具',並會回覆您是否看到瓶頸。我對ARC的表現感興趣。我很好奇 - 大多數專業開發人員使用ARC還是喜歡自己處理內存管理? –

+0

取決於球隊;一些做,一些不。自1989年以來,我一直在開發Objective-C,並在當前涉及的所有項目(包括蘋果公司的項目)中使用ARC。在許多情況下,ARC的性能比手動保留版本快,而在其他方面則表現平平。 – bbum