web-dev-qa-db-ja.com

Cocoaカスタム通知の例

誰かが私にCocoa Obj-Cオブジェクトの例を見せてください。カスタム通知、それを起動する方法、サブスクライブする方法、処理する方法を教えてください。

66
mattdwen
@implementation MyObject

// Posts a MyNotification message whenever called
- (void)notify {
  [[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self];
}

// Prints a message whenever a MyNotification is received
- (void)handleNotification:(NSNotification*)note {
  NSLog(@"Got notified: %@", note);
}

@end

// somewhere else
MyObject *object = [[MyObject alloc] init];
// receive MyNotification events from any object
[[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil];
// create a notification
[object notify];

詳細については、 NSNotificationCenter のドキュメントを参照してください。

81
Jason Coco

ステップ1:

//register to listen for event    
[[NSNotificationCenter defaultCenter]
  addObserver:self
  selector:@selector(eventHandler:)
  name:@"eventType"
  object:nil ];

//event handler when event occurs
-(void)eventHandler: (NSNotification *) notification
{
    NSLog(@"event triggered");
}

ステップ2:

//trigger event
[[NSNotificationCenter defaultCenter]
    postNotificationName:@"eventType"
    object:nil ];
45
mracoker

オブジェクトの割り当てが解除されたら、必ず通知(オブザーバー)の登録を解除してください。 Appleドキュメンテーションの状態:「通知を監視しているオブジェクトの割り当てを解除する前に、通知センターに通知の送信を停止するように指示する必要があります」.

ローカル通知の場合、次のコードが適用されます。

[[NSNotificationCenter defaultCenter] removeObserver:self];

そして、分散通知のオブザーバーの場合:

[[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
5
Grigori A.