ASIHTTPRequest中的block

  先感慨一下,好深的坑...

  ASI很好用,特别是加了block之后,但内存是个问题,具体场景:先push,请求网络数据,然后pop,此时pop的那个controller的dealloc调不到.

  主要是因为在ASI的completionBloc里面调用了self或者成员变量,ASI的block就retain了self,导致cycle.

这帖子也说到了http://desheng.me/2012/03/02/%E8%B0%A8%E6%85%8E%E4%BD%BF%E7%94%A8asihttprequest%E7%9A%84block%E7%89%B9%E6%80%A7/

虽然绕过block也是一种方法,但感觉不爽.

再看老外的 http://thirdcog.eu/pwcblocks/

他说把self转成弱引用 正确的写法是__block typeof(self) bself = self;

(参照 : http://www.cocoachina.com/bbs/read.php?tid-115656.html)

对于property就用点操作符 bself.xxx

对于非property的成员变量就用->操作符 bself->xxx

  至此OK,谢谢原作者们^^

猜你喜欢

转载自hua397.iteye.com/blog/1753214