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高质量群里面听 ...
随机推荐
- 2.2 sikuli中编程运行
http://www.cnblogs.com/Flint/p/4951703.html a.如果需要指定点击的具体坐标,需要使用click(patten.targetoffset(x, y)). b. ...
- OpenLayers 3 的地图基本操作
<body> <div id="map"> <div id="menu"> <button id="zoom ...
- Element type "bean" must be followed by either attribute specifications, ">" or "/>".
在这里其他内容就省了,错在,<bean id="bpcsU1gblDAO"class="dao.jk.bpcs.impl.BpcsU1gblDaoImpl" ...
- scull_p_read()函数分析
/* * Data management: read and write */ static ssize_t scull_p_read (struct file *filp, char __user ...
- 把Ubuntu用户目录下的目录名改成英文
直接改名字是不行的,一重启就回去了 方法一: 把中文文件夹改成相应的英文文件夹,再修改配置文件 ~/.config/user-dirs.dirs XDG_DESKTOP_DIR="$HOME ...
- Vim插件管理 -- Vundle
1 插件目录 -/.vim/bundle/ 没有可自行创建 2 安装Vundle $ git clone https://github.com/VundleVim/Vundle.vim.git ...
- PAT (Advanced Level) 1100. Mars Numbers (20)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- [LeetCode] Magical String 神奇字符串
A magical string S consists of only '1' and '2' and obeys the following rules: The string S is magic ...
- 解决getJSON的缓存问题
$.getJSON("/portal/edu/getAllEdu?adr="+Math.random(),function(data){
- Servlet程序开发-- servlet跳转
跳转:服务器端,客户端 客户端跳转:<response.sendRedirect>地址栏跳转之后改变,无法传递request范围的属性 服务器端跳转:<jsp:forward> ...