代码块

代码块书写格式:<returntype>    (^name)(parameter list) = ^(parameter list) {body}     (返回值的类型可以推导   没有参数则后边的list可以省略   ^只有声明的时候使用)

使用代码块就是使用函数指针一样  也可以typedef 定义为新的类型


代码块是对象 可以发送消息

Block_release(blockname)


代码块访问变量:

本地变量:代码块生命范围内的变量    代码块会将这个范围内的变量都拷贝保存起来一份

参数变量:就是和函数参数一样

全局变量:也没啥特殊的

__block变量:当想要修改本地变量的值 要用__block    限制:长度可变的数组   含有长度可变数组的结构体   不可以定义为__block类型



多线程

1.简单的多线程实现方式:

performselectorinbackground:withobject:  这种方法通过在后台创建一个线程运行方法   又自己的自动释放池    没有返回值  并且至多拥有一个参数

这种方式实现的多线程 当线程结束时会释放自动释放池   但是不会通知你


2.调度队列

连续队列:遵循FIFO   不会产生死锁

并发队列:遵顼FIFO  但是队列中的多个任务可以同时执行

主队列:程序的主线程相关


dispatch_retain  dispatch_release 用来管理队列的引用计数   但是只能修改自己创建的队列  不能修改系统创建的队列


队列上下文:其实就是调用系统函数  将一些数据关联到队列上    关联对象的内存管理由你来处理


清理函数:当对象不在需要设备上下文的时候  让其调用清理函数  将设备上下文对象清理 (类似于dealloc)

__bridge_transfer:将对象内存管理由全局释放池转变为我们的函数  当函数结束时 自动释放池会将这个对象的引用计数-1

——bridge:通知arc这个对象内存由系统管理 


3.添加任务

同步添加:需要等待前边的任务执行完  它才执行

异步添加:不会等待  执行后立刻返回

参数为:队列名     函数指针对象/代码块对象

dispatch_sync_f  添加同步任务(函数形式)

dispatch_async_f

dispatch_sync 添加同步任务(代码块形式)

dispatch_async





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值