码迷,mamicode.com
首页 > 编程语言 > 详细

Delegate/Block/NSNotification与多线程

时间:2016-06-27 11:59:54      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

Delegate/Block/NSNotification是最常用的事件同步方法,各自特点、区别、使用方法就不赘述了。

下面主要想强调一下再多线程中使用Delegate/Block/NSNotification的注意事项。

开发时Delegate的调用方法、Block的调用方法、NSNotification的post方法都可能会在非主线程中调用,此时Delegate/Block/NSNotification的回调方法也将被这个非主线程调用,尤其是Delegate的实现方法很少有人会考虑内部的多线程实现,比如更新UI。由于Delegate/Block/NSNotification可能同时在主线程和非主线程中使用,所以实现时必须同时考虑两种情况。例如更新UI的部分需要写成下面的样子:

    dispatch_async(dispatch_get_main_queue(),^{

        UIButton *button =  [[UIButton alloc] initWithFrame:CGRectMake(50, 50, 100, 44)];

        [self.view addSubview:button];

        [button release];

    });

如果很不幸写成了

    dispatch_sync(dispatch_get_main_queue(),^{

        UIButton *button =  [[UIButton allocinitWithFrame:CGRectMake(505010044)];

        [self.view addSubview:button];

        [button release];

    });

那么在主线程调用的时候就完了。。。没有然后了。。。

如果是大型项目你真心不知道别人会干嘛。。。

如果是小型项目你怎么知道以后不会发展成大项目。。。

所以还是注意点吧!

Delegate/Block/NSNotification与多线程

标签:

原文地址:http://www.cnblogs.com/ThreeLittlePigs/p/5619674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!