决绝Capturing 'demo' strongly in this block is likely to lead to a retain cycle

  1. - (IBAction)onTest:(id)sender
  2. {
  3. BlockDemo *demo = [[BlockDemo alloc]init];
  4.  __weak typeof(BlockDemo) *weakDemo = demo; 
  5. [demo setExecuteFinished:^{
  6. if (weakDemo.resultCode == 200) {
  7. NSLog(@"call back ok.");
  8. }
  9. }];
  10. [demo executeTest];
  11. }

决绝Capturing 'demo' strongly in this block is likely to lead to a retain cycle

时间: 2024-10-25 07:01:03

决绝Capturing 'demo' strongly in this block is likely to lead to a retain cycle的相关文章

Capturing 'self' strongly in this block is likely to lead to a retain cycle [duplicate]

转载至:http://stackoverflow.com/questions/17009966/capturing-self-strongly-in-this-block-is-likely-to-lead-to-a-retain-cycle 问题描述: 13down votefavorite 8 This question already has an answer here: capturing self strongly in this block is likely to lead to

在block函数中规避错误信息 "capturing self strongly in this block is likely to lead to a retain cycle”

以形如 _fontValueChangedBlock = ^(){ [self.fontSmallButton addTarget:self action:@selector(btnFontSmallClicked) forControlEvents:UIControlEventTouchUpInside]; }; 的代码为例,这个代码运行会报警告."capturing self strongly in this block is likely to lead to a retain cycle

capturing self strongly in this block is likely to lead to a retain cycle

一个使用Block语法的实例变量,在引用另一个实例变量的时候,经常会引起retain cycle. _items = [[NSMutableArray alloc] init]; _block = ^{ [_items addObject:@"Hello!"]; //_block引用了_items,导致retain cycle. }; 写成下面格式 __block ViewController *blockSelf = self; _block = ^{ [blockSelf->

IOS中的block 循环引用和retain cycle (经典)

retain cycle 的产生 说到retain cycle,首先要提一下Objective-C的内存管理机制. 作为C语言的超集,Objective-C延续了C语言中手动管理内存的方式,但是区别于C++的极其非人道的内存管理,Objective-C提出了一些机制来减少内存管理的难度. 比如:内存计数. 在Objective-C中,凡是继承自NSObject的类都提供了两种方法,retain和release.当我们调用一个对象的retain时,这个对象的内存计数加1,反之,当我们调用relea

写给喜欢用Block的朋友(ios Block)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/38090205 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 本文不讲block如何声明及使用,只讲block在使用过程中暂时遇到及带来的隐性危险. 主要基于两点进行演示: 1.block 的循环引用(retain cycle) 2.去除block产生的告警时,需注意问题. 有一次,朋友问我当一个对象中的b

和block循环引用说再见

to be block? or to be delegate? 这是一个钻石恒久远的问题.个人在编码中暂时没有发现两者不能通用的地方,习惯上更偏向于block,没有什么很深刻的原因,只是认为block回调写起来更便捷,直接在上下文中写block回调使得代码结构更清晰,可读性更强.而delegate还需要申明protocol接口,设置代理对象,回调方法与上下文环境不能很好契合,维护起来没有block方便.另外初学者很容易会被忘记设置代理对象坑- 然而惯用block是有代价的,最大的风险就是循环引用

【少年,放松~】出现block循环引用的三种情况和处理办法

刚入职在看已经上线的项目,其中用到block进行快捷回调的做法很常用,但是Xcode都给给以了如下[循环引用]的警告(如下)的情况,结合网络上的查找和自己的理解,进行总结如下. // Capturing 'self' strongly in this block is likely to lead to a retain cycle 出现这种情况的原因主要是:因为block的特性,声明block的对象都会以copy的形式持有block,而block对于它内部的对象也会进行强引用,从而导致了循环引

iOS 8:【转】Block循环引用

源地址:http://fann.im/blog/2013/04/17/retain-cycle-in-blocks/ 个人笔记,可能会有理解不够透彻而错误. @fannheyward Objective-C 是基于引用计数(retainCount)来做内存管理,ClassA 用到 ClassB 的时候,通过 alloc/retain/copy 等将 objectB.retainCount+1,不需要的时候通过 release/autorelease 将 objectB.retainCount-1

iOS开发——Block引起循环引用的解决方案

内存问题始终是软件开发中的头等大事,iOS开发中也不例外,在面试中也是必问的问题.今天我们主要来讲讲Block中涉及的循环引用问题.当我们自己一开始写代码的时候,可能会大量在block中使用self,但是当看到别人优秀的代码的时候,发现别人常常不是用self,而使用weakSelf. 为什么呢?本文的示例代码上传至 https://github.com/chenyufeng1991/Block_WeakSelf . 首先我先来说说内存管理的原则: 1.默认使用strong,可选weak.stro