[問題] block retain 問題

看板MacDev作者 (NotLove)時間9年前 (2016/05/16 19:54), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/2 (看更多)
各位好 我利用AFNetworking寫了個重複地詢問server狀態的連線(程式碼在下行網址) http://pastebin.com/AYUDgK2j 想問說,一般網路上看到的情況是 viewController A retain 一個 block B B 中用到 A 時要使用__weak才不會造成memory leak 程式碼是我寫的,可是我搞不清楚這樣寫對不對 感覺是 AFNetworking A, retain Block B, B 再 retain 自己寫的Api C 然後 C 又retain B,...其實我搞糊塗了真正的retain方向沒個概念 另外我這樣寫是正確的嗎? 謝謝各位出手相救! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.54.140 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1463399646.A.AF6.html

05/16 23:32, , 1F
基本上就是生命週期的概念 網路連線大多都是任務式的物件
05/16 23:32, 1F

05/16 23:34, , 2F
任務結束之後就會消失 被他retain的對象也不再受他影響
05/16 23:34, 2F

05/16 23:35, , 3F
所以若是你的ViewController應該比你的連線任務活的還久
05/16 23:35, 3F

05/16 23:37, , 4F
那麼retian它就沒什麼問題
05/16 23:37, 4F

05/16 23:38, , 5F
但若是你的ViewController的生命週期不該受到該連線任務的
05/16 23:38, 5F

05/16 23:39, , 6F
控制的話 那就該使用weak
05/16 23:39, 6F

05/17 11:02, , 7F
謝謝樓上!
05/17 11:02, 7F

05/19 00:47, , 8F
https://goo.gl/95K8Hf k 完它你就懂了
05/19 00:47, 8F
文章代碼(AID): #1NERJUhs (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1NERJUhs (MacDev)