如何查找NSNotification对象类型?

时间:2012-03-07 04:31:47

标签: macos nstextview nsnotifications

我正在为我的textView使用NSNotification,但我的textField点击也调用了这个委托方法。那么,我怎样才能找到NSNotification的对象类型???

目前我正在使用:

MyTextView *text = (MyTextView *)[aNotification object];

这里MyTextView是一个引用textView的类。那么,我如何区分NSNotification的对象类型。

请指导我。 感谢

2 个答案:

答案 0 :(得分:3)

我不建议这样做。为每个操作/通知创建两个单独的方法,使用不同的名称清楚地说明他们正在处理什么。

无论如何,你要求的是这样做的

if ([[aNotification object] isKindOfClass:[MyTextView class]])
{ treat it like MyTextView }

我不确定你对textField点击的意思,但似乎你可能还需要这个

if ([aNotification isKindOfClass:[NSNotification class]])
{...}

答案 1 :(得分:0)

在Swift 5中,如下面的图片所示,

noti.objectAny?

的类型

查找类型是将noti.object强制转换为所需的类型。

000

这是RxSwift的示例,

let observable = NotificationCenter.default.rx.notification( .login )
                   .takeUntil(self.rx.deallocated)
            .flatMap { (noti: Notification) -> Observable<Bool> in
                if let result = noti.object as? A{
                    // ...
                    return self.login(result.id)
                }
                else{
                    return Observable.of(false)
                }

            }