Objective-CでNSNotificationCenterを通じてイベントを送信および受信するクラスを作成する方法?

StackOverflow https://stackoverflow.com/questions/2286347

質問

私は2つのクラスを作成する必要があるとの両方がNSNotificationCenterのmethods.ieを通じてイベントを送受信することができるはず両方のSendEventとたreceiveEventメソッドを持っている必要があります:

      @implementation Class A
-(void)sendEvent
{
    addObserver:---  name:---- object:---
}

-(void)ReceiveEvent
{
postNotificationName: --- object:---
}
@end

など他のクラスと同じではClassBのは、イベントを送受信することができるはずです。どのようにそれを行うことができますか?

役に立ちましたか?

解決

理想的オブジェクトは、その初期化できるだけ早く面白いイベントを観察し始めるでしょう。だから、その初期化コード内の通知センターを持つすべての興味深いイベントを登録します。 sendEvent:は基本的にpostNotification:メソッドのラッパーです。

@implementation A

- (id)init {
    if(self = [super init]) {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveEvent:) name:@"SomeEvent" object:nil];
    }
    return self;
}

- (void)sendEvent {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"SomeOtherEvent" object:nil];
}

// Called whenever an event named "SomeEvent" is fired, from any object.
- (void)receiveEvent:(NSNotification *)notification {
    // handle event
}

@end

クラスBのための同一ます。

編集1:

あなたは上に複雑な問題であるかもしれません。 A NSNotificationCenterは、すべてのイベントが送信され、誰にブローカーとして機能し、それがにそれを転送するために誰が決めます。これは Observerパターンのようなものだが、オブジェクトは、直接ではなく、Aを、観察したりお互いに通知しません。中央のブローカー - この場合はNSNotificationCenter。あなたがする必要がないことを直接#includeでお互いに相互作用する可能性がある2つのクラスを接続してます。

あなたのクラスを設計しながら、

、オブジェクトが通知を受けるだろうか心配したり、それは、彼らが発生したときに、オブジェクトのニーズは、いくつかのイベントについての通知を得るためだけにすることを、他の興味のオブジェクトに通知する方法を、またはそれはのNSNotficationCenterに通知する必要はありませんそのイベントは、発生ます。

だから、要するに、オブジェクトが知っているとinit()方法でこのdealloc()方法では、それら登録解除これらのイベントを登録する必要があることをすべてのイベントを見つけるます。

あなたはこれを見つけることが基本的なチュートリアルに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top