Cocoa Custom Notification Example

后端 未结 3 729
北荒
北荒 2020-11-28 20:19

Can someone please show me an example of a Cocoa Obj-C object, with a custom notification, how to fire it, subscribe to it, and handle it?

相关标签:
3条回答
  • 2020-11-28 21:07

    Make sure to unregister notification (observer) when your object is deallocated. Apple documentation states: "Before an object that is observing notifications is deallocated, it must tell the notification center to stop sending it notifications".

    For Local Notifications the next code is applicable:

    [[NSNotificationCenter defaultCenter] removeObserver:self];
    

    And for observers of distributed notifications:

    [[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
    
    0 讨论(0)
  • 2020-11-28 21:09

    Step 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");
    }
    

    Step 2:

    //trigger event
    [[NSNotificationCenter defaultCenter]
        postNotificationName:@"eventType"
        object:nil ];
    
    0 讨论(0)
  • 2020-11-28 21:19
    @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];
    

    For more information, see the documentation for NSNotificationCenter.

    0 讨论(0)
提交回复
热议问题