自動釋放池和執行 訊息迴圈

2022-01-20 08:14:16 字數 473 閱讀 5199

自動釋放池

1、如果在迴圈中建立了大量的臨時變數的時候需要在迴圈一開始就手動建立乙個自動釋放池

//

解讀:這段**有什麼問題?

for (int i = 0; i < 1000000; ++i)

/*問題:for迴圈裡面建立了大量的臨時變數儲存在堆區,雖然變數每次都出for迴圈的作用域,但不會被銷毀,因此會導致記憶體暴漲。

*///

解決:每一次迴圈都加個自動釋放池,每次迴圈之後都釋放臨時變數。

for (int i = 0; i < 100000000; ++i)

}//注意:如果迴圈裡面是基本資料型別,則不需要,它是系統自動管理的,出了作用域就釋放,我們只需要考慮「物件」即可

自動釋放池 訊息迴圈

執行迴圈 runloop 保證程式不退出 死迴圈 監聽所有的事件 點選,觸控等 網路資料載入完成 特性 沒有事件的時候 會進行休眠 一旦監聽到事件 會立即響應 每乙個執行緒都會有乙個runloop 預設是關閉的,只有主線程的runloop 會啟動 當乙個程式執行起來的時候,只有主線程的訊息迴圈是預設...

自動釋放池

自動釋放池是什麼時候建立的?又是什麼時候銷毀的?原題 思考 1,有返回值的類方法建立出來的物件都是autorelease的。autorelease物件出了作用域後,就會被新增到自動釋放池中。如果largenumber非常大,有可能在乙個for中就把自動釋放池填滿,記憶體消耗非常大!2,解決方案 在f...

自動釋放池

autorelease本質上就是延遲呼叫release方法 autorelease物件什麼時候釋放?引用計數為0的時候才會釋放,不是出了pool就釋放 在一些很消耗記憶體的迴圈呼叫的場景下有時需要手動干預autoreleased物件的釋放時機,不然會導致記憶體暴增,最終導致程式崩潰 nsthread...