IOS中OC的BLOCK问题

原创 2015年07月08日 20:23:38

今天去面试,面试官问到了oC中的BLOCK问题,然后觉得OC就是一个无名函数,然后使用上没有啥区别啊?


问题就在这:OC的BLOCK中有一个self的东东,这个东西是一个强应用的东东,如果这个self出现在你的block中,那你估计多半死掉了;

所有面试官在问道block的问题时候,最关注这个问题,因为强引用在对象被释放掉,而block没有执行完的时候,self的内容就死在了内存里,只有程序被系统干掉的时候,这一个区域的内存才会被释放。

解决办法就是:

-(void) _week *me = self

block{

..=self

}


将一个弱引用的指针穿进去,因为如引用会在对象释放掉的时候自动释放。


OC中Block的原理、实现及注意事项

Block 在Objc中,GCC编译器的更新引入了Block语法,这为objc语言提供了良好的闭包的功能,并为 Mac OS 与 iOS 的多个系统API所使用。 它的基本语法如下 //语法...
  • u011740322
  • u011740322
  • 2016年01月09日 15:24
  • 2025

OC坑集: block作为函数参数

对于 OC 的争论一直不休, 对于一门语言,  我觉得只要能解决你的问题就够了. 评论一门编程语言之前, 你需要真正的去用它,  OC 孰好孰坏, 需要你自己去尝试. OC 坑集, 主要记...
  • intheair100
  • intheair100
  • 2015年10月30日 17:51
  • 1384

玩转 IOS 开发 - block 使用详解

Block 是iOS在4.0之后新增的程式语法,在iOS SDK 4.0之后,block应用几乎无处不在。在其他语言中也有类似的概念称做闭包(closure),比如object C的好兄弟swift ...
  • liulanghk
  • liulanghk
  • 2015年06月05日 23:07
  • 17696

OC高级特性--Block匿名函数

块是Objective-C语言提供的一个强大特性,博主会介绍块语法的意义、块内存管理、怎样在程序中开发块和怎样使用现有API(如Foundation框架)中的块。 简言之,块提供了一种方式,使用...
  • abc59731090
  • abc59731090
  • 2015年07月06日 19:36
  • 1684

Block的引用循环问题 (ARC & non-ARC)

2010年WWDC发布iOS4时Apple对Objective-C进行了一次重要的升级:支持Block。说到底这东西就是闭包,其他高级语音例如Java和C++已有支持,第一次使用Block感觉满简单好...
  • wildfireli
  • wildfireli
  • 2014年03月25日 14:56
  • 37113

iOS编程——OC viewController 传值常用方法Delegate和Block的使用

写了个例子,简单介绍了下Delegate和Block的使用,注意点都在注释里,直接上代码了: 1.FirstViewController.h: #import @interface First...
  • wc455287693
  • wc455287693
  • 2015年08月24日 13:05
  • 1585

iOS Block 需不需要在Block内使用 __weak 来防止循环引用

在OC开发中使用 Block时防止循环引用,大家都知道要加 __weak 来防止循环引用,如下面的宏就是为了解决循环引用而添加的 /**  * 快速生成weak/strong类型的对象  */ #de...
  • jeffasd
  • jeffasd
  • 2016年06月18日 16:51
  • 2828

swift里面利用闭包达到和OC里面block的效果

swift却没有block,所以呢,我研究了一下swift里,闭包代替block的写法
  • syg90178aw
  • syg90178aw
  • 2015年07月22日 16:46
  • 2450

(java转行oc)什么是block,用java来解释oc中的block

Blcok 1.Java代码说明blcok 就是java中匿名内部类,而匿名内部类的好处是代码更清晰 例如 button btn = new Button().setListener(newL...
  • roverk8y
  • roverk8y
  • 2014年01月15日 10:30
  • 2131

iOS-OC-iOS传值大全(代理传值,block 传值,单例传值,通知传值,属性传值)

1、代理传值 有A \B 两个页面需要将B页面的值传个A 总结: 1.首先应该在b页面写一个协议,协议里有带参数的方法,并创建实现该协...
  • u014220518
  • u014220518
  • 2016年03月21日 11:52
  • 811
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS中OC的BLOCK问题
举报原因:
原因补充:

(最多只允许输入30个字)