1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#import <Foundation/Foundation.h>
#include <objc/runtime.h>
#import "ObjectTesting.h"
static BOOL notifiedCurrent = NO;
@interface Toggle : NSObject
@end
@implementation Toggle
- (void) foo: (NSNotification*)n
{
notifiedCurrent = NO;
}
- (void) bar: (NSNotification*)n
{
notifiedCurrent = YES;
}
@end
int main(void)
{
ENTER_POOL
NSNotificationCenter *nc;
id t = AUTORELEASE([Toggle new]);
nc = AUTORELEASE([NSNotificationCenter new]);
[nc addObserver: t selector: @selector(foo:) name: nil object: nil];
class_replaceMethod([Toggle class],
@selector(foo:),
class_getMethodImplementation([Toggle class], @selector(bar:)),
"v@:@");
[nc postNotificationName: @"foo" object: t];
PASS(YES == notifiedCurrent, "implementation not cached");
LEAVE_POOL
return 0;
}
|