2013年12月31日星期二

IOS开发之多线程 - bbqe

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
IOS开发之多线程 - bbqe  阅读原文»

多线程的主要是用来执行一些耗时操作,例如网络图片、视频、歌曲、书籍等资源下载,游戏中的音乐播放等,充分发挥多核处理器的优势,并发(同时执行)任务让系统运行的更快、更流畅。

介绍下比较常用的多线程技术, 主要有NSObject、NSThread、NSOperation、GCD等。

1、 NSObject多线程技术

1> 使用performSelectorInBackground可以开启后台线程,执行selector选择器选择的方法

2> 使用performSelectorOnMainThread可以重新回到主线程执行任务,通常用于后台线程更新界面UI时使用

3> [NSThread sleepForTimeInterval:1.0f]; 让当前线程休眠,通常在程序开发中,用于模拟耗时操作,以便跟踪不同的并发执行情况!

 但是,在程序发布时,千万不要保留此方法!不要把测试中的代码交给客户,否则会造成不好的用户体验。

 提示:使用performSelectorInBackground也可以直接修改UI,但是强烈不建议使用。修改UI最好在主线程中执行

 注意:在使用NSThread或者NSObject的线程方法时,一定要使用自动释放池,否则容易出现内存泄露。

1 - (void)viewDidLoad
2 {
3 [super viewDidLoad];
4
5 // 在后台线程执行方法
6 [self performSelectorInBackground:@selector(testObject) withObject:nil];
7
8 // 打印当前线程num
9 NSLog(@"main - %@", [NSThread currentThread]);
10 }
11
12 - (void)testObject
13 {
14 // 自动释放池,避免出现内存泄露
15 @autoreleasepool {
16
17 // 让当前线程睡眠 2.0 秒
18 [NSThread sleepForTimeInterval:2.0f];
19
20 // 打印当前线程
21 NSLog(@"Background - %@", [NSThread currentThread]);
22 }
23 }

2、NSThread多线程技术

1> 类方法直接开启后台线程,并执行选择器方法

detachNewThreadSelector

2> 成员方法,在实例化线程对象之后,需要使用start执行选择器方法

initWithTarget

对于NSThread的简单使用,可以用NSObjectperformSelectorInBackground替代

同时,在NSThread调用的方法中,同样要使用autoreleasepool进行内存管理,否则容易出现内存泄露。

1 - (void)viewDidLoad
2 {
3 [super viewDidLoad];
4
5 // 开启新线程执行方法
6 [NSThread detachNewThreadSelector:@selector(testObject) toTarget:self withObject:nil];
7
8 // // 通过实例化一个线程来开启任务
9 // NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(testObject) object:nil];
10 //
11 // [thread start];
12
13 // 打印当前线程num
14 NSLog(@"main - %@", [NSThread currentThread]);
15 }
16
17 - (void)testObject
18 {
19 // 自动释放池,避免出现内存泄露
20 @autoreleasepool {
21
22 // 让当前线程睡眠 2.0 秒
23 [NSThread sleepForTimeInterval:2.0f];
24
25 // 打印当前线程
26 NSLog(@"Background - %@", [NSThread currentThread]);
27 }
28 }

3、NSOperation多线程技术

1> 使用步骤:

1 实例化操作

a) NSInvocationOperation

b) NSBlockOperation

2 将操作添加到队列NSOperationQueue即可启动多线程执行

2> 更新UI使用主线程队列

[NSOpeationQueue mainQueue] addOperation ^{};

3> 操作队列的setMaxConcurrentOperationCount

可以设置同时并发的线程数量!

提示:此功能仅有NSOperation有!

4> 使用addDependency可以设置任务的执行先后顺序,同时可以跨操作队列指定依赖关系

提示:在指定依赖关系时,注意不要循环依赖,否则不工作。

1 @interface FLViewController ()
2 {
3 NSOperationQueue *_queue;
4 }
2014回到爱开始的地方 - 田园里的蟋蟀  阅读原文»

  2014新的开始,博客园不只有代码,还有情感,这篇摘自本人QQ空间的文章,希望可以给大家新年“心的旅途”

  >>>>>>>>>>>>>>>>>>>>>>>分割线<<<<<<<<<<<<<<<<<<<<<<<<

  好长时间没有在空间再写点东西了,也许是看了这部电影,也许是年末做些总结,也许是真的想多了。。。总之此时的脑海浮现出一幕一幕,挥散不去。

先从这部电影说起吧,我怕脑海中的一切画面会随着现实的冲洗一点一点的模糊掉,没有跌宕起伏的情节,没有什么亲密的镜头,但就像是清澈的溪水流过浮躁喧嚣的人心。一场旅行,一个爱的终点,一个爱的起点,她曾问:分开几十年,但为什么分开这么久没有放弃,他回答:他们之所以没有放弃彼此,是因为从未分开过。是啊,隔海隔山的距离,几十年漫长的岁月都没让他们放弃,因为他们从未分开过。不知他们的时代太单纯了,还是我们这时代太复杂了,那时候认定一个人就是一辈子,而现在到手的爱情都会怀疑他是真是假!我想当今社会找份真爱真的好难,渴望爱、却不敢爱,真爱了、却不信爱,多么可怜可悲的现代人啊!多想回到那个年代,轻牵你手,脸颊还微微泛红,岁月无痕,郎心依旧!

也许我们大多数人都会认为被现实绑架了自己生活,随着日子一天一天的逝去,梦想或都已经渐行渐远,无论你如何选择或放弃哪一条路,每个人的命运其实都早已注定,生活只是人生的一个又一个的旅程,一个没有返的旅程。旅途中的各样的风景、酸甜苦辣只有自己才能完全体会得到,但都希望有一个符合自己心中目标的人能一直相伴,直至。。。
想问问心底里的自己:奋不顾身的爱上一个人是爱,还是在思考过后的选择是爱。
我很庆幸自己有几个矫情的基友和知己,可以在你悲伤的时候给以向前的动力,在你需要帮助的时候给以援手,
可以一个眼神、一句话就懂得。疯狂的时候陪你疯狂,开心的时候陪你开心,伤心的时候陪你伤心,有这些,我知足。
趁我们都还年轻,多走几步路,多欣赏下沿途的风景,不要急于抵达目的地而错过了流年里温暖的人和物;趁我们都还年轻,多说些浪漫的话语,多做些幼稚的事情,不要嫌人笑话错过了生命中最美好的片段和场合;趁我们都还年轻,把距离缩短,把时间延长。多做些我们想要做的任何事。尘世走一遭,繁华拜尽,众生苦乐。一个人独自的旅途,不经意间,常常会触动内心中某个温柔的角落,是我们对生命的体味,其实也是一种享受自己的人生旅途。我们每个人都有着许多婉约的心绪,四季更迭,旅途是心灵另一扇窗。
不知从什么时候起,开始喜欢听张国荣、梅艳芳的歌了,当听到哥哥唱起《当爱已成往事》,脑海回荡能引起心灵共鸣的声音时,才发现是这个世界给你开了一个玩笑,真的希望哥哥还在,回首望:往事只是往事,现实还是如此。
说说自己吧,2013年有太多说不尽的故事,有你、毕业、工作、分别、希望、失望、痛苦、激情、彷徨、欢乐、泪水等等,仿佛一切的形容词都在这一年发生,也许有些事只能自己懂得,尝尽人间便知冷暖,这一年也是开始,终于明确自己下面要走的是什么路,就像博客中的签名:坚持所想,坚持所做,收获不一样的人生。
新的2014给自己:
努力工作,多和父母联系,路上看看别人的风景,饿了好好吃饭,别苦了自己,失落了玩一把游戏,别想多了,再多的不好都只能代表过去的状态,很快可以平复。有钱真的不一定快乐,我有个很好的朋友就是例子,没钱不一定不快乐,我就是佐证。不要高估别人,低估自己,其实深入内心,很多你自以为很了不起的人,其实也没什么,真是这样。
莫想太多,笑口常开,好采自然来
~~~
数年后回首,你也会笑自己。
~~~
曾经在园中看过一则段子,拿来修改了下,那我觉得这是我要的生活:
我憧憬三十岁时能给媳妇开一个花店;
  店里有舒服的沙发,我能窝在里面看书、写码甚至打游戏;
  有舒服的茶座,时不时约上两三个基友一起坐着喝喝茶、扯扯蛋;
  有一台勉强算高级的半自动咖啡机,亲手操作,调制出一杯美味的咖啡,是一种精神上的享受;
  有自己的小孩常在身边,一定不告诉他什么叫“hello world”;
  有一条阿拉斯加或者萨摩常伴左右;
  有...

  。。。

  。。。

  。。。
      2013-12-31 晚


本文链接:http://www.cnblogs.com/xishuai/p/3499741.html,转载请注明。

阅读更多内容

没有评论:

发表评论