Delegate/Block/NSNotification与多线程

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 =    [[UIButtonalloc]initWithFrame:CGRectMake(50,50,100,44)];

    [self.viewaddSubview:button];

    [buttonrelease];

});

如果很不幸写成了


dispatch_sync(dispatch_get_main_queue(),^{

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

    [self.viewaddSubview:button];

    [buttonrelease];

});

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

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

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

所以还是注意点吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 基础 1. 为什么说Objective-C是一门动态的语言? 2. 讲一下MVC和MVVM,MVP? 3. 为...
    波妞和酱豆子阅读 8,710评论 0 46
  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 5,819评论 0 17
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,459评论 30 472
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,708评论 1 23
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,742评论 25 709

友情链接更多精彩内容