Re: [問題] block retain 問題

作者: darktt (小朱)   2016-05-16 22:17:01
※ 引述《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)。
作者: issuemylove (NotLove)   2016-05-17 11:01:00
感謝d大解說,腦袋更清晰了 謝謝!
作者: xinya707 (媽我在這)   2016-09-17 14:40:00
Days matter 倒數忌日都有記日
作者: Decill (inner peace)   2016-09-17 14:44:00
一樓我知道是輸入法問題 不過我還是忍不住笑了
作者: happyfuture (!)   2016-09-17 14:46:00
1F好嚇人阿XD

Links booklink

Contact Us: admin [ a t ] ucptt.com