作者issuemylove (NotLove)
看板MacDev
標題[問題] block retain 問題
時間Mon May 16 19:54:03 2016
各位好
我利用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
→ Esvent: 基本上就是生命週期的概念 網路連線大多都是任務式的物件 05/16 23:32
→ Esvent: 任務結束之後就會消失 被他retain的對象也不再受他影響 05/16 23:34
→ Esvent: 所以若是你的ViewController應該比你的連線任務活的還久 05/16 23:35
→ Esvent: 那麼retian它就沒什麼問題 05/16 23:37
→ Esvent: 但若是你的ViewController的生命週期不該受到該連線任務的 05/16 23:38
→ Esvent: 控制的話 那就該使用weak 05/16 23:39
→ issuemylove: 謝謝樓上! 05/17 11:02