gpt4 book ai didi

objective-c - 移除一个可能不存在的 NSNotification 观察者

转载 作者:搜寻专家 更新时间:2023-10-30 19:59:39 25 4
gpt4 key购买 nike

我似乎找不到关于这个主题的明确答案。

是否可以移除一个可能不存在的观察者?

示例代码:

-(void)commonInit{

[[NSNotificationCenter defaultCenter]removeObserver:self];


[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(userDidChangePrecision:)
name:kUser_Changed_Precision
object:nil];

}


-(void)dealloc{

[[NSNotificationCenter defaultCenter]removeObserver:self];

[super dealloc];

}

在运行时可能会重新初始化对象的情况下,这将防止为该对象初始化多个观察者。

最佳答案

来自 Apple 文档的片段:

- (void)removeObserver:(id)notificationObserver
Parameters
*notificationObserver*
The observer to remove. Must not be nil.

- (void)removeObserver:(id)notificationObserver name:(NSString *)notificationName object:(id)notificationSender
Parameters
*notificationObserver*
Observer to remove from the dispatch table. Specify an observer to remove only entries for this observer. Must not be nil, or message will have no effect.

在这两种情况下,observer not be nil 的警告都被夸大了;在这两种情况下,效果都是此消息无效。既没有编译器错误也没有运行时错误,没有僵尸,&c。

同样,指定一个不在观察的观察者也没有效果。

不是确定的答案,而是基于对试错代码的观察和调查,例如:

[[NSNotificationCenter defaultCenter] removeObserver:nil];
[[NSNotificationCenter defaultCenter] removeObserver:[UIView new]];

关于objective-c - 移除一个可能不存在的 NSNotification 观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com