没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
Objecve-C 的另类教程
编者按:
一般教程,又是语法又是关键字的. 本编教程 直接讲几个关键性技术. 让你立马能上手做
一个有"深度"的应用程序.
前提是, 你应该会一些简单的操作, 比如建立一个项目 等等.
[objective-c] 多线程之
NSThread 、 NSOperation 、 NSInvocationO
peration
三
小淡
中支持多线程操作,使用 和 可以完
成多线程功能。多线程的功能主要是为了防止阻塞主线程的工作(主要是 操
作和显示),使一些耗时的的操作在另一个线程中完成,完成后可以通知主线
程来进行 上的更新。多线程功能在实际开发中用的很多,最典型的就是网络
请求和处理操作,下面主要来讨论一下 中的 和
:
一、
创建 主要有两种方式:
使用类方法创建
查看源代码
打印 帮助
!"#$%&'
% ( )*
+使用传统方式创建
查看源代码
打印 帮助
,-).% (
!"#$%&' )*
+ )*
两种方式的区别:
第一种方式会立即调用并执行线程,第二种必须调用 方法后才会开始
执行线程,在此之前可以对线程进行一些设置,比如线程优先级等。第二种方
式与 / 中线程的使用类似。
+使用类方法(0)创建的线程不需要进行内存清理,而
使用 .% 方法创建的线程需要当 & 为 1 时调用
方法释放内存。
查看源代码
打印 帮助
22在另一个线程中运行的方法
+ "'#$%&
3 4
5
66667&8,8-
7&8))*
9 666622%
: 6
; 66668)*
< =
多线程中执行的方法必须自行进行内存管理,否则会出现警告信息。
运行程序可以看到打印信息:
+1+1<1< 13 +5;19< (<13)>
+1+1<1< 13 +5;9< +)
&%>
+1+1<1< 13 +55;9< +)>
完整代码如下:
查看源代码
打印 帮助
1
"'?@
1
+
4
1
3
6666&?@)*6
1
5
6
1
9
6666@%"!AA'*
1
:
666622使用类方法创建线程
1
;
226
!"#$%&'
% ( )*6
1
<
6
1
666622使用传统方式创建
1
6666,-).% (
!"#$%&' )*
6666)*
+
6666)*
3
=6
5
6
9
22在另一个线程中运行的方法
:
"'#$%&
;
4
<
66667&8,8-7&8)
)*6
6
+
1
666622%
+
6666@%"!A&%A'*
+
+
6666B 3)*
+
3
6666@%"!AA'*6
+
5
6
+
9
66668)*
+
:
=
二、
是 中的一个抽象类,用来封装单个任务和代码执行一项
操作,由于是抽象类,所以不能直接实例化使用,必须定义子类继承该抽象类
来实现,比较常用的 的子类有 ,另外,
也可以自己继承 来实现线程的操作。
另外会使用到操作队列 C&&,它相当于一个线程队列或者可
以叫做线程池,可以顺序执行队列中的操作,也可以设置队列中操作的优先级。
头文件
查看源代码
打印 帮助
D
EB&2B&F6
+ 6
3
!(0G$
6
5 6
9
!
实现文件:
查看源代码
打印 帮助
1
D
A0G$A6
1
+
6
1
3
!
0G$6
1
5
6
1
9
22相当于 / 线程中的 & 方法
1
:
"'
1
;
4
1
<
666622%
1
6666@%"!A&%A'*
1
6666B 3)*
6666@%"!AA'*
+
=
3
!
使用方法如下:
查看源代码
打印 帮助
22使用 子类来创建线程
+
6666C&&,C&&-C&&
))*
3 66660G$,G$-0G$))*
5 6666C&& G$)*
9 6666G$)*
: 6666C&&)*
运行结果和上面结果一样。
三、
的子类 提供了一套简单的多线程编程
方法,是 多线程编程中最简单的一种实现方式。直接看代码:
查看源代码
打印 帮助
1
22创建操作队列
1
+
6666C&&,C&&-C&&
))*
1
3
666622设置队列中最大的操作数
1
5
6666C&&0H&& )*
1
9
666622创建操作(最后的 参数是传递给 方法的参数)
1
:
6666,-
).% ( !"#$%&'
)*
1
;
666622将操作添加到操作队列
剩余49页未读,继续阅读
abellea
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0