ios跨线程通知_iOS通知线程处理 - osc_3m34anq6的个人空间 - OSCHINA - 中文开源技术交流社区...
####准备
测试项目中点击ViewController界面跳转到SecondTestViewController中,再点击SecondTestViewController时返回到ViewController,并且将ViewController中一个view的背景颜色设置为红色。
####代码示例:
通知发送点在主线程中的时候接收调用的方法也在主线程执行
//发送位置 SecondTestViewController
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_NAME object:nil userInfo:nil];
NSLog(@"当前线程 发送 %@", [NSThread currentThread]);
[self.navigationController popViewControllerAnimated:YES];
//接收位置ViewController
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:NOTIFICATION_NAME object:nil];
- (void)handleNotification:(NSNotification *)notification
{
self.changeView.backgroundColor = [UIColor redColor];
NSLog(@"当前线程 设置背景 %@", [NSThread currentThread]);
}
//输出
当前线程 设置背景 {number = 1, name = main}
当前线程 发送 {number = 1, name = main}
通知发送在global时,经测试其在同一线程
//发送点
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"当前线程 发送 %@", [NSThread currentThread]);
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_NAME object:nil userInfo:nil];
});
//接收点
self.changeView.backgroundColor = [UIColor redColor];
NSLog(@"当前线程 设置背景 %@", [NSThread currentThread]);
//输出
当前线程 发送 {number = 3, name = (null)}
当前线程 设置背景 {number = 3, name = (null)}
//同时在接收点提示警告“-[UIView setBackgroundColor:] must be used from main thread only”
我们创建一个子线程让其中发送通知
//发送
dispatch_queue_t queue = dispatch_queue_create("sss", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
NSLog(@"当前线程 发送 %@", [NSThread currentThread]);
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_NAME object:nil userInfo:nil];
});
//接收
self.changeView.backgroundColor = [UIColor redColor];
NSLog(@"当前线程 设置背景 %@", [NSThread currentThread]);
//输出
当前线程 发送 {number = 3, name = (null)}
当前线程 设置背景 {number = 3, name = (null)}
//同时在接收点提示警告“-[UIView setBackgroundColor:] must be used from main thread only”
官方文档:在多线程的程序中,通知会在post通知时所在的线程被传达,这就导致了观察者注册通知的线程和收到通知的线程不在一个线程。
总结:通过上面的示例可以初步得出结论Notification的发送处理一般在同一线程,所以当我们在子线程发送了通知后在接收端如果涉及到UI操作的部分不要忘记返回到主线程后再进行UI操作。
如有错误,欢迎拍砖
ios跨线程通知_iOS通知线程处理 - osc_3m34anq6的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐
- ios 图像坐标系_iOS中理解坐标系 - Megan_zhou的个人空间 - OSCHINA - 中文开源技术交流社区...
坐标.点和像素之间的微妙转换也可能降低绘制性能,导致线条和文字模糊.观察以下代码: CGContextSetLineWidth(context, 3.); // 绘制从坐标{10, 100}到{200 ...
- java通讯方式_Java线程通讯方式 - osc_63rgy8af的个人空间 - OSCHINA - 中文开源技术交流社区...
l 休眠唤醒方式: Object的wait.notify.notifyAll Condition的await.signal.signalAll l CountDownLatch:用于某个线程A等待 ...
- java线程归并排序_Java-归并排序 - FeanLau的个人空间 - OSCHINA - 中文开源技术交流社区...
public class MergeSort { static int number=0; public static void main(String[] args) { int[] a = {26 ...
- java跨域cookie共享_cookie跨域共享 - qijian0503的个人空间 - OSCHINA - 中文开源技术交流社区...
问题描述 需要解决前端pc跟服务端(java),跨域后都能获取到同一个cookie. 使用二级域名共享cookie有一个限制条件,就是两个域名的二级域名必须相同 前端pc访问域名:a.b.com 后端 ...
- mysql跨年统计年前年后_PHP面试总结 - osc_chmxgjn9的个人空间 - OSCHINA - 中文开源技术交流社区...
18.一群猴子排成一圈,按1,2,-,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去-,如此不停 的进行下去,直到最后只剩下一只猴子为止,那只猴子 ...
- java线程锁为什么要唯一,java线程同步-锁 - 谁说这么长又没有中心思想还与个人技术主题无关的的标题是胡闹??? - OSCHINA - 中文开源技术交流社区...
1.synchronized 用在方法和代码块上有什么区别呢? synchronized 用在方法签名上(以test为例),当某个线程调用此方法时,会获取该实例的对象锁,方法未结束之前,其他线程只能去 ...
- android新浪微博授权,新浪微博授权认证过程 - Android、iOS开发 - OSCHINA - 中文开源技术交流社区...
一.授权认证 1.请求用户授权Token URL: https://api.weibo.com/oauth2/authorize HTTP请求方式:GET/POST 请求参数 必选 类型及范围 说明 ...
- 静态变量php跨页面,PHP的静态变量 - jone的个人页面 - OSCHINA - 中文开源技术交流社区...
静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中.一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会.就是说,下次再调用这个函数的时候,该变量的值会保留下来. 只要在变量 ...
- ios跨线程通知_iOS 通知的多线程处理 与Runloop的关系
一.通知的添加 通知的添加有两种常用的方式: 方式一: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selecto ...
- ios弧形进度条_IOS贝塞尔曲线圆形进度条和加载动画-阿里云开发者社区
做项目让做一个加载动画,一个圈圈在转中间加一个图片,网上有好多demo,这里我也自己写了一个,中间的图片可加可不加.其中主要用到贝塞尔曲线.UIBezierPath是对CGContextRef的进一步 ...
最新文章
- 【Netty】Netty 核心组件 ( ChannelOption | EventLoopGroup )
- WPF中桌面屏保的制作(主要代码)
- leetcode 216. Combination Sum III | 216. 组合总和 III(Java)
- 单体应用架构——垂直应用架构———分布式架构———SOA架构———微服务架构
- mysql 5.5 安装配置方法图文教程
- 【Java】《面向对象程序设计——Java语言》Castle代码修改整理
- 请推荐好的工作流产品
- 我来做百科(第一天)
- 1.FreeRTOS学习笔记-入门概述
- 用freebsd搭建日志服务器
- switch更新主机服务器维护,switch更新链接不到服务器
- 如何搭建公司知识共享平台
- 操作系统OS作业整合
- ensp配置服务器发布(将DMZ区的web服务区发布,供client访问)
- ♂【超全超详细】2W字零基础小白黑客学习路线,知识体系(附学习路线图)♂
- 最近很火的ChatGPT和GPT4
- mac下安装pyinstaller
- 音曼Omnos 5.1全景声音响全网首评 声音惊艳
- 【北邮国院大三上】电子商务法(e-commerce law)知识点整理——Banking Lawe-Payment
- Java OpenCV-4.0.0 图像处理11 自定义图像滤波(降噪) 算子
热门文章
- 中英文说明书丨CalBioreagents ACTH抗原抗体对
- “五一”或成疫情来最火爆假期,招行信用卡天天返利助力消费
- 天然产物分子机制研究(内含彩蛋)——药物靶点预测系统案例分析2
- wincc远程服务器配置,wincc连接远程opc服务器
- Python获取某平台主播照片, 实现颜值检测, 进行排名
- azw3电子书如何用安卓手机打开?
- Qt雪花飘落程序,下雪
- Voxel RCNN:高性能3D目标检测网络(AAAI2021)
- 【ajax】7.请求:请求超时与网络异常处理+取消请求+请求重复发送问题
- 牛客练习赛30-A/C