iphone記憶體管理 二

2021-07-04 23:52:46 字數 1410 閱讀 8517

(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中的例項,程式設計師還不必自己手動釋放相應的記憶體空間,這點對...

記憶體管理二

發現兩篇記憶體池的博文,博文位址如下,寫的很好,能避免記憶體碎片和記憶體洩露問題,比我這個玩具 要好很多,大家可以看看 在我們做專案的時候,經常會分配了記憶體,然後卻忘了釋放,造成記憶體洩漏的問題。以下 可以實現在 退出的時候自動釋放之前申請但未釋放的記憶體。其原理是 用乙個雙向鍊錶維護申請的記憶體...