0
我想在我的一個iOS程序中尋找內存泄漏。我覺得我有它釘到一對夫婦類似這些行:何時發佈臨時NSString?
NSString *s1Upper = [s1 uppercaseString];
s1Upper = [s1Upper stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
(我知道這兩個線不從邏輯角度看是有意義的,剛剛說明了內存的問題,我有)
可以說s1是@「abc」(以空格結尾)。按照我理解NSString的方式,s1Upper在第一行代碼之後指向一個NSString(@「ABC」以空格結尾)。第二行後,它指向一個不同的NSString(@「ABC」沒有空格)。
我的問題:什麼時候發佈第一個NSString?
我的猜測是,噹噹前的NSAutoreleasePool被耗盡時它被釋放。在那種情況下,我有一個後續問題:我如何影響這個並控制排水?
這就是我的想法。現在,我該如何改變這一點?我創建了大量的臨時值(因爲這段代碼經常被調用),我不希望我的程序使用所有的內存。 – Thorsten 2012-04-17 22:17:19
您可以使用可變字符串'NSMutableString'來代替自我修改而不是創建字符串的轉換副本。在進行這種字符串轉換時,它的內存效率更高。 – 2012-04-17 22:19:11
謝謝亞歷克斯,我想我必須重新執行我的實施。 – Thorsten 2012-04-17 22:20:11