(2)盡量避免使用autorelease
雖然autorelease非常簡單有用,但是在iphone上一定要謹慎使用,畢竟iphone記憶體相當有限.autorelease可能會導致直接的隱型記憶體洩露.
比如使用
nsstring *string = [nsstring stringwithformat:@"value = %d", intvariable];
你可以換為
nsstring *string = [[nsstring alloc] initwithformat:@"value = %d", intvariable];
...
[string release];
使用自動釋放物件還有個壞處就是不便於開發者管理。增加程式崩潰的機率.
不過autorelease物件也不是一無是處。有時它的作用也很強大。
比如當你需要返回乙個物件時就最好使用autorelease
(nsstring *)autotest
你還可以在迴圈中使用autorelease pools
nsautoreleasepool *pool = [[nsautoreleasepool alloc] init];
for (id item in array)
[pool release];
注意:就我目前測試和觀察看來。你只能在同乙個函式中使用
nsautoreleasepool *pool = [[nsautoreleasepool alloc] init];
和
[pool release];才能達到效果
最後一點就是:千萬不要嘗試去release乙個auto物件。否則你的程式必然崩潰
待續......
iPhone開發記憶體管理
開發iphone 應用程式並不難,基本上就是三個詞 memory,memory,memory iphone os 對記憶體的要求很嚴格,有memory leak 殺掉 記憶體使用超限額,殺掉。乙個經過測試的程式,在使用過程中90 以上的崩潰都是記憶體問題造成的。在這裡簡單總結一下object c 記...
iPhone中管理malloc分配的記憶體空間
我們都知道在c c 語言中,堆記憶體是應該由程式設計師負責釋放的,編譯器並不負責釋放程式設計師自己分配的堆記憶體空間 而在objective c語言中,類例項的釋放是通過release方法進行釋放的,如果是autorelease pool中的例項,程式設計師還不必自己手動釋放相應的記憶體空間,這點對...
記憶體管理二
發現兩篇記憶體池的博文,博文位址如下,寫的很好,能避免記憶體碎片和記憶體洩露問題,比我這個玩具 要好很多,大家可以看看 在我們做專案的時候,經常會分配了記憶體,然後卻忘了釋放,造成記憶體洩漏的問題。以下 可以實現在 退出的時候自動釋放之前申請但未釋放的記憶體。其原理是 用乙個雙向鍊錶維護申請的記憶體...