[問題] 關於使用autorelease或直接使用release的時機

看板MacDev作者 (等待.微笑)時間16年前 (2009/07/17 20:09), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
各位好: 之前問過關於記憶體管理的問題 雖然弄懂reference counting要怎麼做了 可是卻產生了一些疑問 當我們在使用autorelease時要先建立 autorelease pool count值是在pool release時才會真正釋放 請問什麼時機使用autorelease會比直接release好啊? reference counting裡有dealloc這個用法 它可直接把count值歸零並釋放 如果我都有乖乖的release 那到最後count值也會等於零啊 那dealloc又在什麼時候會用到呢? 謝謝各位^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.210.155

07/17 21:58, , 1F
你要回傳一個物件,但這物件是用alloc+init建立的,
07/17 21:58, 1F

07/17 21:59, , 2F
若不做處理就先回傳的話會發生memory leak,
07/17 21:59, 2F

07/17 21:59, , 3F
這時候就用autorelease把這物件丟到池裡去,
07/17 21:59, 3F

07/17 21:59, , 4F
下一個處理步驟可以用retain把它救回來。;)
07/17 21:59, 4F

07/17 22:00, , 5F
dealloc會在release觸發時自動執行,不信的話可以在dealloc
07/17 22:00, 5F

07/18 02:45, , 6F
ref 直接歸零就破壞 ref 的作用了
07/18 02:45, 6F
文章代碼(AID): #1AO6dyHi (MacDev)
文章代碼(AID): #1AO6dyHi (MacDev)