Objective-c学习笔记3
objective-c代码块多并发
1.代码块对象是对C语言中函数的扩展,除了函数中的代码,代码块还包含有变量绑定,代码块有时也被称为闭包
2.代码块包含两种绑定类型,自动绑定使用的是栈空间,托管绑定使用的是对空间
3.代码块不属于ansi的c语言标准
4.代码块特征如下 1.返回类型可以手动声明也可以编译器自动推导,具有指定类型的参数列表 ,拥有名称,代码块的实例如下
void (^代码块名称)(参数类型 参数);
5.代码块的实现如下
void (^代码块名称)(参数类型 参数) = ^代码块名称
{
代码块实现
}
6.代码块只有在定义的时候才需要^符号,在使用的时候可以当成一般函数来使用
7.代码块可以访问与他同时创建的有效变量
8.使用typedef关键字可以简化代码块定义
typedef double (^代码块名)(参数列表)
然后就可以 代码块名 代码块实例 = ^(参数列表){实现}
9.代码块可以访问函数用到的标准类型的变量,包括本地变量,全局变量,参数变量和_block变量,代码块内部的本地变量
10.本地变量被代码块获取是作为常量被获取的,也就是说不能修改值,要是想修改值的话,必须将他们声明为可修改的_block
11.部分变量不能被声明为block的,包括长度可变的数组,包含长度可变数组的结构体
12.苹果引入了GCD技术实现系统级别的线程管理
13.@synchronization可以对代码进行临界区保护
14.如果定义了一个属性没有指定关键字nonatomic,编译器自动生成的getset方法是互斥的,可以使用@nonatomic关键字指定互斥级别
15.想让一段代码在后台执行可以使用NSObject的performSelectorInBackground:withObject方法
16.在后台执行的方法不能带返回值,要么只有一个参数,要么没有参数
17.oc的调度队列分为三种,分别是连续队列,并发队列,主队列,连续队列按照fifo原则进行,并发队列按照优先级执行,但是一次运行的任务量是不确定的,可以指定并发队列的三个优先级分别是high low default,如果想获得优先级,使用dispatch_get_global_queue方法,得到的结果分别是DISPATCH_QUEUE_PROORITY_HIGH DISPATCH_QUEUE_PROORITY_LOW DISPATCH_QUEUE_PROORITY_DEFAULT
18.获取当前队列 dispatch_get_current_queue
19.队列的调度最好使用的是代码块
20.关于多线程的事情后期补充
Objective-c学习笔记3的更多相关文章
- Objective -C学习笔记之字典
//字典:(关键字 值) // NSArray *array = [NSArray array];//空数组 // NSDictionary *dictionary = [NSDictionary d ...
- Objective -C学习笔记 之copy(复制)
//自定义类对象实现copy需要遵守copy协议(否则程序崩溃),实现必须实现的协议方法,里面的代码就决定了你的copy是深是浅 #import <Foundation/Foundation.h ...
- objc_msgSend消息传递学习笔记 – 消息转发
该文是 objc_msgSend消息传递学习笔记 – 对象方法消息传递流程 的基础上继续探究源码,请先阅读上文. 消息转发机制(message forwarding) Objective-C 在调用对 ...
- ufldl学习笔记和编程作业:Softmax Regression(softmax回报)
ufldl学习笔记与编程作业:Softmax Regression(softmax回归) ufldl出了新教程.感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量 ...
- ESP32学习笔记(一) 环境搭建与下载
ESP32学习笔记(一) 环境搭建与下载 作者:Nevel 博客:nevel.cnblogs.com 转载请保留出处 前几天刚入手了ESP32模块,趁着放假有时间,我们先把ESP32的编译环境搭建好 ...
- LDA主题模型学习笔记5:C源代码理解
1.说明 本文对LDA原始论文的作者所提供的C代码中LDA的主要逻辑部分做凝视,原代码可在这里下载到:https://github.com/Blei-Lab/lda-c 这份代码实现论文<Lat ...
- 深度学习笔记(七)SSD 论文阅读笔记简化
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- 深度学习笔记(七)SSD 论文阅读笔记
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)
ufldl学习笔记与编程作业:Softmax Regression(vectorization加速) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learn ...
- ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)
ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...
随机推荐
- PHP 实现定时任务的几种方法
一. 简单直接不顾后果型 <?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limi ...
- LoadRunner参数化
在场景中,每一个vuser能够按照取唯一值的策略,是unique one , 出现84800错误有以下2种(自我实验中得出) 1.vuser的个数大于参数给定的个数 2.vuser初始时间不够,在可通 ...
- HDU 1232 畅通工程(最小生成树+并查集)
畅通工程 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- ios 集合总结
NSArray 用于对象有序集合(相当于是数组) 它有两个限制: 1. 它只能存储objective-c的对象,但不能存储C中的基本数据类型,如int , float, enum, struct等. ...
- Unity中www的基本应用
Unity的www主要支持HTTP中的GET和POST方式,GET方式会将请求附加到URL后,POST方式则是通过FORM的形式提交. 以下为Unity客户端的信息: using UnityEngin ...
- L10,not for jazz
expressions: It is called a clavichord这被称为古钢琴 a friend of my father's我父亲的朋友 words: musical,adj,音乐的 ...
- EnglishWords----1
upon在...上面 upright垂直的,直立的 upward向上的 outward外面的,向外的 downward向下的 vertical垂直的 parallel平行的 sow播种 cut切 ch ...
- jq的合成事件
jq中有两个合成事件 hover()和toggle() 1.hover() hover方法用于模拟光标悬停事件.当光标移动到元素上时,会触发指定的第一个函数(enter),当光标移出这个元素时,会触发 ...
- 利用transform制作幻灯片
html代码 <html><head></head><body><div class='hpic'> <ul style=" ...
- Application对象
Application对象报讯是应用程序参数的额,多个用户可以共享一个Application.用于启动和管理ASP.NET应用程序. Count 属性 获取Application对象变量的个数,集合 ...