看板 MacDev 關於我們 聯絡資訊
iOS 的記憶體的回收機制並不是你在程式中寫 Release 就會馬上釋放的, 而是要到垃圾回收機制 (garbage collection) 開始的時候才會回收 Retain count 是 0 的物件。 所以在 ViewController 切換的時候記憶體使用量會短暫的增加都是正常的, 而且在 iOS 中 ViewController 切換之後,上一個畫面的 ViewController 並不會被 Release,會保留在記憶體中直到它被 dismiss 之後才會被釋放, 如果這層 ViewController 是第一層的話那就永遠不會被釋放掉了。 -- #1ID_Wqk2 (iPhone) [ptt.cc] [問題] 記錄天數的app
xinya707:Days matter 倒數忌日都有 09/17 14:40
xinya707:記日 09/17 14:41
Decill:一樓我知道是輸入法問題 不過我還是忍不住笑了 09/17 14:44
happyfuture:1F好嚇人阿XD 09/17 14:46
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.58.105.166 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1397599090.A.039.html
Blueshiva:其實ARC跟GC是有差別的,應該說Apple現在放棄用GC的機制 04/16 08:17
Blueshiva:回頭用Ref Counter,但是用PreProcessing幫你加上retain 04/16 08:18
Blueshiva:release,而檢查釋放的時機,則是run loop結束的時候 04/16 08:19
atst2:正確的來講,釋放的時機是autorelease pool結束時 04/16 08:30
atst2:而autorelease pool預設只有一個,要自己控制時機得自己加 04/16 08:31
atst2:@autorelease 區塊(arc) 04/16 08:31
ishuen:所以設定爲nil也不會馬上釋放嗎? 04/16 08:37
ishuen:如果只有一個reference的話? 04/16 08:38
whitefur:iOS是ARC不是GC.... 04/16 09:11
whitefur:http://0rz.tw/8VxR6 推這篇 04/16 09:14
Blueshiva:RefCount降到0也不會馬上刪除,必須等autorelease pool 04/16 11:42
Blueshiva:要刪除的時候才會一起檢查,一起刪除 04/16 11:42
HuangJC:但我還真看不出我的程式可以在哪加 @autorelease 04/16 19:24
HuangJC:雖然是第一個畫面喚起第二個畫面,第二個畫面 close退回第 04/16 19:24
HuangJC:一個畫面;但進入及退出卻不是口袋型的,code沒有明確的堆疊 04/16 19:25
HuangJC:那我就找不到一個地方去加 @autorelease 04/16 19:25
HuangJC:當初在書上讀到 autorelease 還覺得很酷咧,感覺很方便 04/16 19:26