【OC语言】关于block的使用
来源:互联网 发布:唯一网络上市 编辑:程序博客网 时间:2024/06/06 20:53
在ios的开发中,我们经常会用到block。它语法简介,定义跟使用比较方便,大部分时候我们把它用于回调。例如我们常用的第三方网络请求框架AFN中就大量利用block,在异步线程收到网络数据后,利用block回调之前定义好的方法。下面简单总结下使用block需要注意的问题。
1.block的声明
在oc中我们声明一个block经常使用copy。因为block默认是存放在栈中的,出来方法的作用域,block就会被销毁。当我们执行copy操作以后,block会被copy到堆中,以便之后使用。
2.block中使用local变量
在一个block我们可以直接使用一个本地变量,block会把变量拷贝一份到自己中。但是我们不能直接去修改一个local变量的值。如果要修改,有两种办法,第一种是可以修改为 static 全局变量;第二种是可以用新关键字 __block 修饰变量,加了__block后,block底层是引用的变量的指针,因此可以修改。
3.关于block的循环引用
对象有一个Block属性,然而这个Block属性中又引用了对象的其他成员变量,那么就会对这个变量本身产生强应用,那么变量本身和他自己的Block属性就形成了循环引用。在ARC下需要修改成这样:
@property(nonatomic, readwrite, copy) completionBlock completionBlock;__weak typeof(self) weakSelf = self;self.completionBlock = ^ { if (weakSelf.success) { weakSelf.success(weakSelf.responseData); }};
0 0
- 【OC语言】关于block的使用
- 关于block的OC
- oc block的使用
- OC--Block的使用
- IOS开发---OC语言-㉙内存管理:block的使用
- OC 中关于block使用的简单举例说明
- OC------block块的使用
- OC中Block的使用
- OC block的简单使用
- OC之Block的使用
- OC中Block的使用
- OC-简单的使用BLOCK
- OC之Block的使用
- OC语言中的block
- OC语言之block
- OC语言--BLOCK
- OC语言之block
- 关于Block的使用
- 将Android Studio的设置恢复到初始化
- 为什么Java中1000==1000为false而100==100为true?
- 使用Doxygen为VHDL工程生成文档模板
- Typedef Struct 用法详解和用法小结
- 下载编译 Qt 5 for Android 并新建工程
- 【OC语言】关于block的使用
- 设置JLabel或其他组件透明度
- hdu 5593 ZYB's Tree
- spring依赖注入总结
- 【C语言】冒泡排序及优化
- 深入浅出设计模式(八):10.合成模式(Composite) 11.享元模式(Flyweight)
- 【UE4官方文档翻译】Introduction to C++ Programming in UE4 (介绍UE4中的C++编程)
- react(1)-broswerify+reactify+gulp搭建react的workflow+React入门资料集合
- 《Android开发艺术探索》读书笔记 (4) 第4章 View的工作原理