小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

objective c 塊中對(duì)self的引用。

 quasiceo 2015-03-31
 
解決的辦法就是使用一個(gè)__weak變量取代:
 
__weak  DetailViewController *weakSelf = self;
self.animatedView.block  = ^( CGContextRef context,  CGRect  rect,   
   CFTimeInterval totalTime,  CFTimeInterval deltaTime)
{
DetailViewController  *strongSelf = weakSelf;
if (strongSelf != nil )
     {
          CGPoint textPoint =  CGPointMake((rect. size.width   -   
textSize.width )/2, (rect.size.height - textSize.height)/2);
         [strongSelf. artistName drawAtPoint:textPoint withFont :font];
     }
};

塊外的弱引用不增加retainCount.
塊內(nèi)的強(qiáng)引用退出塊時(shí)會(huì)被釋放。

如果單純的在塊內(nèi)引用外部的self,會(huì)增加retainCount,而不會(huì)釋放。



 如果這個(gè) block 被異步調(diào)用那么創(chuàng)建一個(gè)
強(qiáng)引用保持這個(gè)被使用的對(duì)象處于活動(dòng)狀態(tài)是正確的。

 DetailViewController 會(huì)在退出塊后retainCount=0,才被釋放。
釋放被延遲了。
autoreleasepool 的一個(gè)優(yōu)點(diǎn)。
  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多