2010-02-17 44 views
2

我怎樣才能安全地返回NSString沒有任何數據損壞? 比如我做了這樣的..NSString返回?

-(NSString *)compose 
{ 
    NSString *xml; 
    return xml; 
} 

如果XML已經超過2 KB,將它安全返回...我怎麼能每次都分配有自動釋放內存?

回答

0

NSString類已經過Apple測試,因此它不得包含任何損壞錯誤。關於數據大小,除了內存之外沒有限制。 對於你有你的對象添加到自動釋放池像自動釋放問題:

- (NSString *)compose { 
    NSString *yourXMLText = [[[NSString alloc] initWithData:yourXMLData encoding:NSUTF8StringEncoding] autorelease]; 
    return yourXMLText; 
} 

欲瞭解更多信息,內存管理,你可以看到這一點:Memory Management Rules

0

NSString方法stringWithFormat:將返回一個自動釋放NSString,如將string等等。另外,您可以撥打NSString上的autorelease方法將其添加到自動釋放池中。我不能說NSStrings的大小限制,但我不知道有什麼理由,他們不能這麼大(我相信有人會糾正我)。

0

我會用NSString方便的一個像大衛說的方法。

NSString * xml = [NSString stringWithFormat:....]; 
return xml; 

這將在運行循環結束時自動釋放。

0

2Kb不應該是一個問題,但是如果你在一個緊密的循環中調用了這個函數(也就是說它被調用了很多次而沒有移出調用你的編寫方法的方法),那麼存在一個風險,直到後期纔會發佈。

如果你擔心引入內存泄漏(我認爲這就是你的意思是腐敗),那麼千萬不要錯過這個令人驚訝的有用的儀器工具(最簡單的方法是進入運行菜單並選擇運行性能工具 - >泄漏如果你遇到的問題是轉儲和突然退出,你可以檢查殭屍從儀器工具直接(訪問發佈內存):

文件 - >新建 選擇iPhone或iPhone模擬器(視。你想要運行它,我只是使用模擬器)和內存選項 然後從右側選擇殭屍 單擊選擇 設置默認目標(也在l-bar)啓動可執行文件 - > YourAppName

您將能夠識別導致問題的代碼行。