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的更多相关文章

  1. Objective -C学习笔记之字典

    //字典:(关键字 值) // NSArray *array = [NSArray array];//空数组 // NSDictionary *dictionary = [NSDictionary d ...

  2. Objective -C学习笔记 之copy(复制)

    //自定义类对象实现copy需要遵守copy协议(否则程序崩溃),实现必须实现的协议方法,里面的代码就决定了你的copy是深是浅 #import <Foundation/Foundation.h ...

  3. objc_msgSend消息传递学习笔记 – 消息转发

    该文是 objc_msgSend消息传递学习笔记 – 对象方法消息传递流程 的基础上继续探究源码,请先阅读上文. 消息转发机制(message forwarding) Objective-C 在调用对 ...

  4. ufldl学习笔记和编程作业:Softmax Regression(softmax回报)

    ufldl学习笔记与编程作业:Softmax Regression(softmax回归) ufldl出了新教程.感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量 ...

  5. ESP32学习笔记(一) 环境搭建与下载

    ESP32学习笔记(一) 环境搭建与下载 作者:Nevel 博客:nevel.cnblogs.com 转载请保留出处 前几天刚入手了ESP32模块,趁着放假有时间,我们先把ESP32的编译环境搭建好 ...

  6. LDA主题模型学习笔记5:C源代码理解

    1.说明 本文对LDA原始论文的作者所提供的C代码中LDA的主要逻辑部分做凝视,原代码可在这里下载到:https://github.com/Blei-Lab/lda-c 这份代码实现论文<Lat ...

  7. 深度学习笔记(七)SSD 论文阅读笔记简化

    一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...

  8. 深度学习笔记(七)SSD 论文阅读笔记

    一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...

  9. ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)

    ufldl学习笔记与编程作业:Softmax Regression(vectorization加速) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learn ...

  10. ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)

    ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...

随机推荐

  1. 2.2 sikuli中编程运行

    http://www.cnblogs.com/Flint/p/4951703.html a.如果需要指定点击的具体坐标,需要使用click(patten.targetoffset(x, y)). b. ...

  2. OpenLayers 3 的地图基本操作

    <body> <div id="map"> <div id="menu"> <button id="zoom ...

  3. Element type "bean" must be followed by either attribute specifications, ">" or "/>".

    在这里其他内容就省了,错在,<bean id="bpcsU1gblDAO"class="dao.jk.bpcs.impl.BpcsU1gblDaoImpl" ...

  4. scull_p_read()函数分析

    /* * Data management: read and write */ static ssize_t scull_p_read (struct file *filp, char __user ...

  5. 把Ubuntu用户目录下的目录名改成英文

    直接改名字是不行的,一重启就回去了 方法一: 把中文文件夹改成相应的英文文件夹,再修改配置文件 ~/.config/user-dirs.dirs XDG_DESKTOP_DIR="$HOME ...

  6. Vim插件管理 -- Vundle

    1 插件目录  -/.vim/bundle/ 没有可自行创建 2 安装Vundle  $ git clone https://github.com/VundleVim/Vundle.vim.git   ...

  7. PAT (Advanced Level) 1100. Mars Numbers (20)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  8. [LeetCode] Magical String 神奇字符串

    A magical string S consists of only '1' and '2' and obeys the following rules: The string S is magic ...

  9. 解决getJSON的缓存问题

    $.getJSON("/portal/edu/getAllEdu?adr="+Math.random(),function(data){

  10. Servlet程序开发-- servlet跳转

    跳转:服务器端,客户端 客户端跳转:<response.sendRedirect>地址栏跳转之后改变,无法传递request范围的属性 服务器端跳转:<jsp:forward> ...