标签 object-c 下的文章
Threading Programming Guide 1 About Threaded Programming
iOS线程编程手册-1-关于线程编程
虽然有GCD和NSOperation可以高效地实现多线程,但是你也可以使用OS X和iOS提供的底层的线程API。
文档结构
- About Threaded Programming 介绍线程的概念和在app中的作用
- Thread Management 介绍OS X中的线程技术和使用方法
- Run Loops 介绍如何使用响应事件的Run Loop
- Synchronization 线程同步和操作方式
- Thread Safety Summary 线程安全相关
Advanced Memory Management Programming Guide
关于iOS内存管理
该文章包含了一些ARC出现之前的内存管理方法,看完之后去看 《 Transitioning to ARC Release Notes 》可以更加完整地把知识结合起来。
内存管理可以理解为把内存这种有限的资源分配给一个application里面所有代码和数据的动作。
使用Objective-C的时候,内存管理实际上就是对app内使用的Object的关系的管理。因为iOS的内存管理是基于reference counting的。
目标是app占用的内存中不包含任何不需要的object。
Concurrency Programming Guide 4 Dispatch Queues
Dispatch Queues
type of Dispatch Queues
类型 | 描述 | 限制 |
---|---|---|
Serial | 也叫private dispatch queue,串行执行queue上的每一个task。 每一个task都在独立的线程里运行,由dispatch queue统一管理。经常用来控制对特定资源的访问(如临界资源)。 | 木有限制,你可以创建任意多个的serial dispatch queue,他们之间是并行的。 |
Concurrent | 也叫global diapatch queue,并行执行queue里面的每一个task。每一个task都在独立的线程里运行,由dispatch queue统一管理。并行的数量是动态地,由system当前的资源状态决定。 | concurrent dispatch queue有四个,由系统提供,根据优先级别区分为default、low、high、background。 |
Main dispatch queue | 这个diapatch queue在main thread里串行执行task。所以这个queue是关联main thread的run loop的,用来执行dispatch source相关的任务。因为该queue在main thread执行task,所以常用作各任务的同步点 | 全局唯一的特殊serial dispatch queue |
Concurrency Programming Guide 3 Operation Queues
Operation Queues
与GCD对比
稍微慢一点点,因为是NSOperation和NSOperationQueue基于GCD的(在Mac OS X v10.6 & iOS 4之后1);
Operation Queue可以实现operation的dependency功能,使之在制定的operation完成之后再运行。而且指定线程可以在不同的operation queue里跑;
可以重用、取消、暂停operation;
可以使用KVO,方便监控operation的运行状态;
Operation既可以直接调用
start
方法独立运行也可以add到operation queue里面跑;可以使用
setCompletionBlock:
设置一个operation执行完之后的动作;可以定义operation优先级别
setQueuePriority:
;
Concurrency Programming Guide 2 Concurrency and Application Design
Concurrency and Application Design
关于iOS多线程先看这个:
一.线程概述
有些程序是一条直线,起点到终点;有些程序是一个圆,不断循环,直到将它切断。直线的如简单的Hello World,运行打印完,它的生命周期便结束了,像昙花一现那样;圆如操作系统,一直运行直到你关机。
Concurrency Programming Guide 1 Glossary
术语表
application
我们常说的APP,包含用户互交界面的应用程序
asynchronous design approach
异步设计方法
asynchonous是指让代码跑在别的线程上,而不是发起的线程上。使用多核处理器资源来提高程序的运行效率。
block object
一种C结构体,包含了代码和相关数据。使用block可以很方便的把一段包含数据的代码交给其他线程执行。关于block的具体介绍见 Block Programing Guide
Key Value Coding and Key Value Observing
Key Value Coding1
简介
KVC(Key-value coding)是一套利用字符串标识符间接访问对象属性和关系的机制,由NSKeyValueCoding informal protocal
定义。
Date and Time Programming Guide 2
坑着先