关于重复注册通知的问题

【Bluedroid】Bluetooth GATT 客户端通知注册 / 注销核心流程与资源限制分析 本文深入解析了Android蓝牙GATT客户端通知注册/注销的完整流程。从JNI层入口函数gattClientRegisterForNotificationsNative开始,通过BTIF层线程安全调度,最终调用BTA层的BTA_GATTC_RegisterForNotifications实现核心逻辑。 阅读详情
iOS中通过通知中心可以实现发送与接收通知的效果,其中若多次发送同一通知,对方就会多次响应,但如果多次注册通知,也会有多次响应的效果,这里容易比较隐形的bug。

多次发送:

//发送通知方
    //self 发送通知
    [[
NSNotificationCenter defaultCenter] postNotificationName:@"justTest" object:nil];
    [[
NSNotificationCenter defaultCenter] postNotificationName:@"justTest" object:nil];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"justTest" object:nil];

//接收通知方
- (void) resignNotification{
    [[
NSNotificationCenter defaultCenter] addObserverForName:@"justTest" object:nil queue:nil
                                                 
usingBlock:^(NSNotification *note) {
                                                     
NSLog(@"luozhiwei");
                                                  }];
}
结果:
2015-07-25 16:15:46.491 multipleRegistrationNotification[5233:171998] luozhiwei
2015-07-25 16:15:46.491 multipleRegistrationNotification[5233:171998] luozhiwei
2015-07-25 16:15:46.491 multipleRegistrationNotification[5233:171998] luozhiwei

多次接收:

//发送通知方
[[NSNotificationCenter defaultCenter] postNotificationName:@"justTest" object:nil];

//接收通知方
- (void) resignNotification{
    [[
NSNotificationCenter defaultCenter] addObserverForName:@"justTest" object:nil queue:nil
                                                 
usingBlock:^(NSNotification *note) {
                                                     
NSLog(@"luozhiwei");
                                                  }];

    [[NSNotificationCenter defaultCenter] addObserverForName:@"justTest" object:nil queue:nil
                                                 
usingBlock:^(NSNotification *note) {
                                                     
NSLog(@"luozhiwei");
                                                  }];


    [[NSNotificationCenter defaultCenter] addObserverForName:@"justTest" object:nil queue:nil
                                                 
usingBlock:^(NSNotification *note) {
                                                     
NSLog(@"luozhiwei");
                                                  }];
}


结果:
2015-07-25 16:15:46.491 multipleRegistrationNotification[5233:171998] luozhiwei
2015-07-25 16:15:46.491 multipleRegistrationNotification[5233:171998] luozhiwei
2015-07-25 16:15:46.491 multipleRegistrationNotification[5233:171998] luozhiwei



结论:为了避免因此重复注册而造成错误,建议每次注册一个通知之前,可以先注销一次该通知。
OCR开发车架号识别vin码识别系统 一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车 阅读详情

相关推荐

如何通过常规测井曲线识别砂岩、泥岩、碳酸盐岩和煤层

常规测井曲线通过不同岩性的物理性质差异识别砂岩、泥岩、碳酸盐岩和煤层。砂岩表现为低自然伽马(GR)、中等密度(RHOB)和声波时差(DT);泥岩以高GR、高中子(NPHI)和高DT为特征;碳酸盐岩显示低GR、高RHOB和低DT;煤层则具有极低RHOB、极高NPHI和DT的独特组合。综合GR与三孔隙度曲线(RHOB、NPHI、DT)可有效区分岩性,其中密度测井对煤层识别最可靠。电阻率(RT)曲线辅助判断流体性质,但需结合其他参数综合分析。

love code, love life. 2593

关于ios NSNotificationCenter 可以多次添加(addObserver) 同一个通知的 问题

偶然的一次, 开发中, 给同一个通知 注册了多次, 发现这个通知多次调用响应的方法, 才发现, 同一个对象是可以多次注册同一个通知的。 这点以后需要注意,   1.写在ViewController中的注册通知,在页面pop后会自动在通知中心移除自己;写在其他对象中的注册通知,释放后不会自动移除自己,这时候会引起崩溃。 另外 有说通知发送和 接受都是在同一线程内的,这个我不赞同!   2.发...

just-time的博客 4885

[arcgis插件]在批量出图时,如何把图层属性表以动态表格的形式插入到布局页面

在批量出图时,如何把图层属性表以动态表格的形式插入到布局页面。

坐听风雨 4563

iOS 注册通知之后多次执行响应方法

//假设 在程序中已经发送了通知 KNotificationConfirmGetCash -(void)buttonClicked    //按钮点击事件 {          [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(confirmToGetMoneyResponse

开拓--跋涉 6027

Simulink模块库介绍(一)——信号源模块

Simulink模块库介绍(一)——信号源模块库目录Clock模块Digital Clock模块Band-Limited White Noise模块 目录 simulink模块库中提供了丰富的信号源模块组。逐一介绍,算是对之前做个总结吧 Clock模块 通过时钟模块,输出的时间作为判断呢,如下图,前2s之前为高斯白噪声,后2s为正弦曲线,共计10s。 Digital Clock模块 数字时钟模块主要用于离散系统的计时,sample time表示采用时间,如下图:分别是1s和0.5s的采样时间 Band-

5万+

KEPServerEX 6 之 EX 6.11.718.0 发布说明

KEPServerEX 6.11.718.0 发布说明

-雲飛兄-博客 2882

NSNotification多次重复通知的解决办法

在做项目阶段,发现每次app正常状态下退出登录后,再重新登录进app,(viewDidLoad中写了注册通知的方法)在viewDidLoad中会再次注册一次通知, 比如,当第一次登录的时候,viewDidLoad中调用了一次注册方法,当退出登录,再次进入该页面的时候,viewDidLoad又注册了一次通知,所以在此发出通知后接受到两次通知,如果再次退出,再次登录进入该页面的时候,又一次注册了一次通

More reading and learning to become excellent 8853

51、基于深度卷积神经网络的自闭症分类研究

本研究提出了一种基于深度卷积神经网络的自闭症分类方法,通过融合VGGNet-19和ResNet-52模型的特征,并在决策层采用SVM分类器,实现了对自闭症谱系障碍(ASD)和典型发育(TD)个体的准确区分。研究使用ABIDE数据集,结合数据增强和特征拼接技术,取得了88.12%的分类准确率和0.88的ROC曲线下面积。结果表明,该方法在自闭症自动诊断中具有良好的性能,同时研究也探讨了其局限性,并展望了未来改进方向,如多模态数据融合、迁移学习和模型可解释性的提升。

grpc6streamer的博客 130

极光推送-一条消息被推送了两次解决办法

问题描述: 在使用JPush推送时,推送出去一条消息,而客户端通知栏中却收到两条相同的消息,并且同通知栏点击任意一条消息,在控制台都能打印出来。问题定位于:重复推送。 首先通过服务端的跟踪配合,确定Push操作只执行了一次,那么问题可能出现在客户端。客户端在AppDelegate中的操作大体归类为:注册推送、回调函数。 最终问题的原因找到了:Register注册方法被执行了两次,即重复注册的...

yhf102537的博客 2951

PX4从放弃到精通(五):PX4中的姿态表示方法及转换关系

文章目录机体坐标系与地理坐标系一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 机体坐标系与地理坐标系 在实际应用中,加速度计的测量轴是由运动平台安装固定此器件的轴向决定的。这些坐标轴就形成了载体坐标系,定义如下: 坐标原点设在载体质心(这样可简化运动方程的推导); y轴指向载体前方,称为横滚轴,横滚角以y轴为起始旋转轴而得到,符合右手定则; x轴与y轴夹角90°,指向载体横向,称为俯仰轴,俯仰角以x轴为起始旋转轴而得到,符合右手定则; z轴与x轴、y轴构成右手笛卡儿坐标系,指向载体垂直方向

超维空间科技的博客 8113

Android Input——输入系统介绍(一)

Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。

小旭的专栏 1712

关于NSNotificationCenter收到多次相同通知的问题

在项目中某个地方需要接收一个通知,然后去做一项任务,调试时发现有时会收到两条相同的通知,奇怪了,排查步骤如下: 1.查看是否发送了两次通知; (结果发现只发送了一次) 2.查看- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nulla...

CoderL 2835

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(10) C++ 前置后置增减运算符重载形式与比较

C语言的++、–运算符在此不讨论。 文章目录1、前置后置增减运算符重载的形式2、前置和后置运算符的性能比较 1、前置后置增减运算符重载的形式 自增运算符“++”和自减运算符“–”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载

二进制君 5831

在 往CCLayer里面加 Notification通知的时候,一定要加在OnEnter和OnExit里面

在 往CCLayer里面加  Notification通知的时候,一定要加在OnEnter和OnExit里面,不要加在init和 dealloc上面,因为 很多时候CCLayer是通过node方法产生的,在切换layer的时候,dealloc不一定会调用,这样会导致一个layer多次注册一个通知,这样导致,如果发送一个通知,会多次调用通知响应函数,导致问题,切记。    例子代码如下:

tangaowen的专栏 1520

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NSNotificationCenter通知接收多次

http://blog.youkuaiyun.com/tlm38025/article/details/12509821       最近在做的一个ios的项目上面用到了ios的NSNotificationCenter,却发现会重复收到一个通知多次,很是奇怪。       首先:确定发送通知的地方只发送了一次,[[NSNotificationCenterdefaultCente

呆萌院长 2981

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

自定义UIView中怎么注册销毁NSNotification通知

自定义UIView中怎么注册销毁NSNotification通知因项目需求,需在自定义UIView内添加通知,因未及时移除该通知,导致请求方法执行多次。如下是从stackOverFlow查到的答案.记录一下。代码如下'//移除通知方法' - (void)willMoveToWindow:(UIWindow *)newWindow { if (newWindow == nil) { '// W

useruser19900720的博客 1298

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

cometd总收到几条重复的通知问题

背景:angular项目,利用cometd接收通知,当对组件多次初始化时,每次通知上报时,会收到几条重复的通知。 猜测:应该是cometd注册了多个监听器,由于每次销毁组件时,没有把cometd监听器清除,导致每次初始化都会有一个监听器。 解决:利用angular生命周期钩子ngOnDestroy,每次销毁组件时,清楚对应的cometd实例和监听器。 // 销毁组件时清除cometd实例 ...

zwbHUST的博客 284

ios接收notification重复

今天修改了一个困扰了好几天的BUG,本文记录一下 现象是,点击1次按钮,有时会弹出2次对话框。一开始以为是偶现的BUG,很难定位。今天才发现,在页面第一次加载时,不会出现,而从第二次加载开始,必定出现。最后调试跟踪到这段代码: - (void)cloudBackup:(CDVInvokedUrlCommand*)command { [[NSNotificationCenter defa

kyfxbl 1490

利用键盘弹出通知,做页面跟随动画

在viewDidLoad中调用方法注册 键盘弹出动画的实现 在dealloc中移除通知 这样做的目的就是保证通知只注册一次,并且不会在特定情况下过早移除。

Immanito 776

TanStack Table React 的 LegacyFeatures 接口:v8 字符串标识符如何在 v9 特性系统中继续生效

TanStack Table v9(本仓库中 `packages/react-table`)将表格能力重构为可组合的 `features` 特性系统,而 `LegacyFeatures` 是 `useLegacyTable` 兼容层注册的完整特性集合:它在 v9 内置 `StockFeatures` 的基础上,合并进 v8 风格的 filter、sort、aggregation 函数注册表,使得列

gitblog_00630的博客 745

iOS: 当app从background切换到foreground,如何通知uiviewcontroller

http://blog.youkuaiyun.com/totogogo/article/details/7744814 当app从background切换到foreground,会trigger AppDelegate.m的2个方法:applicationWillEnterForegroundand applicationDidBecomeActive 但却不会trigger curren

jeffasd的专栏 991

NSNotification在使用过程中遇到的问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33973600的博客 94

OC 使用通知的坑(NSNotificationCenter)

干了五六年的开发了,居然一直没发现使用通知时还有这样的坑: 当你使用通知时,如果重复添加一个通知N次,就会接受到N次的响应事件。系统在实现通知的时候,并没有根据通知名称去重。 例:给HomeController 添加一个通知A次,当其他对象发送对应的通知消息时,HomeController就会收到A次的消息。...

江小豪的博客 1297

Android FCM推送及通知栏展示

实现FIrebase Cloud Message推送功能,用户收到通知后,可以悬浮通知,自定义的大/小通知展示在通知栏,判断前台/后台,点击后进行跳转。

Android 领域开发程序员,希望通过写博客的方式不断的总结提升自己,大家共同进步哦! 3395

NSNotificationCenter没有处理好带来的通知方法执行多次

ViewController是项目的入口也就是根试图控制器,然后UITabBarController在其上面模态产生,还有一个通话CallingVC,也是由ViewController模态产生,并且每次使用完成后置nil,需要时在生成新的。其中在UITabBarController的一个VC中post出去通知,ViewController接收该通知,并且对此通知方法进行相应的操作,我测试的是有网和

qq_35673999的博客 1632

iOS开发:NSNotificationCenter通知机制详解与实战

实际体验时,发现其生成的iOS项目可以直接运行调试,不需要配置复杂的开发环境。特别是处理通知这类需要多页面联动的功能时,平台提供的实时预览能快速验证通信效果,比传统Xcode调试更直观高效。对于单次通知可使用block版本并设置NSNotificationSuspensionBehavior。响应方法需使用@selector语法声明,且参数类型固定为NSNotification。使用NSNotificationQueue合并短暂间隔内的通知。通过instrument的Allocations检测观察者泄漏。

MoonbeamOwl67的博客 1050
上一篇: NSMutableAttributedString的应用
下一篇: iOS property属性
luozhiwei_iOS
博客等级 码龄12年 4粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值