gpt4 book ai didi

objective-c - NSNotification 在父类(super class)中观察并在父类(super class)和子类中处理

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:50 26 4
gpt4 key购买 nike

我有类 ParentClass 观察 NSNotification。 ParentClass 处理通知。 ChildClass 继承了 ParentClass,也负责处理通知。 发送通知的顺序是确定的吗?

换句话说,ParentClass 是否总是在 ChildClass 之前处理通知,反之亦然?

最佳答案

这取决于实例化哪些类以及如何实例化,形成实际对象。还要看子类是否调用super进行处理。否则,正如 NSNotificationCenter 的文档所说,接收通知的对象的顺序是随机的,并且不取决于您是子类还是父类(super class)。请考虑以下示例以便更好地理解:(由于您的解释不完全清楚,因此需要几个示例):

示例 1:两个不同的对象

ParentClass *obj1 = [[ParentClass alloc] init];
ChildClass *obj2 = [[ChildClass alloc] init];
// register both of them as listeners for NSNotificationCenter
// ...
// and now their order of receiving the notifications is non-deterministic, as they're two different instances

例子2:子类调用super

@implementation ParentClass

- (void) handleNotification:(NSNotification *)not
{
// handle notification
}

@end

@ipmlementation ChildClass

- (void) handleNotification:(NSNotification *)not
{
// call super
[super handleNotification:not];
// actually handle notification
// now the parent class' method will be called FIRST, as there's one actual instace, and ChildClass first passes the method onto ParentClass
}

@end

关于objective-c - NSNotification 在父类(super class)中观察并在父类(super class)和子类中处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933363/

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