iOS block 小结

一、
0、为什么不使用方法来保存代码,要使用block
(1)方法封装代码一开始就写死了,而不能在某个方法内部创建block保存一段代码,并且根据不同的需求调用不同的代码
1.类似于指向函数的指针
2、block的定义格式
(1)没参数,没返回值
(2)有参数,没返回值
(3)有参数,有返回值
3、block默认情况下保存在栈中,block里面引用对象会自动释放,使用copy会保存到堆中,会对里面的对象retain一次,强引用。
4、block默认情况下不能修改外界的数据,除非使用__block 关键字修饰
5、block参数传递
(1)默认情况下:值传递
(2)加上__block后,地址传递
6、为什么定义block的时候要使用copy修饰:
(1)在定义好block时候不一定立刻使用,当使用到的时候可能内部的对象已经被释放了,所以使用copy,强引用,保证对象不被释放;
7、使用typedef 给block取别名

二、OC代码转C++
1、命令 : clang -rewrite-objectc     

三、使用block封装思想
1、定义一个block作为对象的属性,在适当的时候(例如初始化,懒加载)给block传递一段代码
2、在适当的时候(例如:点击,触发事件等)调用对象的block,执行封装的代码

四、区别__block和__weak的作用
(1)__block修饰的对象,就算在堆中,在block内部不会进行retain
(2)__weak修饰的对象,如果在堆中,在block内部还是会retain,只是把引用改成了弱引用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值