に通知を投稿し、他のクラス(つまり)にその通知をClassA
登録できますClassB
。
これがあなたがそれをすることができる方法です:
(でClassA
):
[[NSNotificationCenter defaultCenter]
postNotificationName:@"noteName" object:self];
(でClassB
):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(doSomething:)
name:@"noteName" object:nil];
ClassA
インスタンスが新しい通知を投稿するたびに、その通知に登録されている他のインスタンスに(即座に)通知されます。この場合、ClassB
を実行しますdoSomething:(NSNotification *)note
。
[編集]
その通知をセッターメソッド(setVar:(NSString*)newVar
)に投稿できます。
何かを伝えたい場合は、postNotificationName:object:userInfo:
バリアントを使用してください。userInfo
はでありNSDictionary
、あなたはそれにあなたが望むものを何でも渡すことができます。例えば:
NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:var, @"variable", nil];
[[NSNotificationCenter defaultCenter]
postNotificationName:@"noteName" object:self userInfo:dic];
doSomething:
ここで、メソッドを編集します。
-(void)doSomething:(NSNotification*)note {
if ([[note name] isEqualToString:@"noteName"]) {
NSLog(@"%@", [note userInfo]);
}
}
詳細:
https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Notifications/Introduction/introNotifications.html
https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Notification.html
https://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/MacOSXNotifcationOv/Introduction/Introduction.html