ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/gstep-base-0.2.7.tgz#/gstep-base-0.2.7/checks/nsnotification.m

This is nsnotification.m in view mode; [Download] [Up]

/* The simplest of tests for the NSNotification and NSNotificationCenter
   classes.  These tests should be expanded. 

   (The Tcp*Port classes, however, do test the notification mechanism 
    further.) */

#include <Foundation/NSNotification.h>
#include <Foundation/NSString.h>
#include <Foundation/NSAutoreleasePool.h>

@interface Observer : NSObject
- (void) gotNotificationFoo: not;
@end

@implementation Observer

- (void) gotNotificationFoo: (NSNotification*)not
{
  printf ("Got %@\n", [not name]);
}

- (void) gotNotificationFooNoObject: (NSNotification*)not
{
  printf ("Got %@ without object\n", [not name]);
}

@end

id foo = @"NotificationTestFoo";

int main ()
{
  id o1 = [NSObject new];
  id observer1 = [Observer new];
  id arp;

  arp = [NSAutoreleasePool new];

  [[NSNotificationCenter defaultCenter]
    addObserver: observer1
    selector: @selector(gotNotificationFoo:)
    name: foo
    object: o1];

  [[NSNotificationCenter defaultCenter]
    addObserver: observer1
    selector: @selector(gotNotificationFooNoObject:)
    name: foo
    object: nil];


  /* This will cause two messages to be printed, one for each request above. */
  [[NSNotificationCenter defaultCenter]
    postNotificationName: foo
    object: o1];

  /* This will cause one message to be printed. */
  [[NSNotificationCenter defaultCenter]
    postNotificationName: foo
    object: nil];

  
  [[NSNotificationCenter defaultCenter]
    removeObserver: observer1
    name: nil
    object: o1];

  /* This will cause message to be printed. */
  [[NSNotificationCenter defaultCenter]
    postNotificationName: foo
    object: o1];

  [[NSNotificationCenter defaultCenter]
    removeObserver: observer1];

  /* This will cause no messages to be printed. */
  [[NSNotificationCenter defaultCenter]
    postNotificationName: foo
    object: o1];

  [arp release];

  exit (0);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.