作者darktt (小朱)
看板MacDev
標題Re: [問題] block retain 問題
時間Mon May 16 22:17:01 2016
※ 引述《issuemylove (NotLove)》之銘言:
: 各位好
: 我利用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方向沒個概念
: 另外我這樣寫是正確的嗎? 謝謝各位出手相救!
我舉個例子:有 FirstViewController 與 SecondViewController,介面如下面網址:
https://gist.github.com/Darktt/b42ddc12d9ae049f0431f93775a756de
FirstViewController 會在其中一次的按鈕觸發下建立 SecondViewController,
並將 FirstViewController 給了 SecondViewController,
之後將它顯示出來。
這時候 FirstViewController 其實還在記憶體中,不會被釋放,
所以不用再使用 retain (strong) 將 FirstViewController 增加一次的 retain count,
這時候在 SecondViewController dealloc 的時候也不能釋放 FirstViewController,
因為這會造成提早釋放的問題。
其實
assign(weak) 與
retain(strong) 的差異是這個物件有沒有被其他的物件長期持有
有的話就是
assign(weak),沒有就是
retain(strong)。
--
#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), 來自: 220.133.234.121
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1463408227.A.CF5.html
推 issuemylove: 感謝d大解說,腦袋更清晰了 謝謝! 05/17 11:01