有一個這樣的方法:
-(void)didLoginWithAccount(MyAccount *)account
給這個方法添加了observer :
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didLoginWithAccount:)];
問題是發了通知,怎麼傳遞一個MyAccount
對象。
1.添加觀察者:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didLoginWithAccount:) name:@"app:Login" object:nil];
2.處理方法
而處理的方法didLoginWithAccount: 它的定義應該如下
-(void)didLoginWithAccount:(NSNotification*)notification
3.發送通知,通知觀察者
MyAccount *account=.....; //得到你的account信息,並傳遞給觀察者
[[NSNotificationCenter defaultCenter] postNotificationName:@"app:Login" object:account userInfo:nil];
需要注意的是無論是定義觀察者還是發送通知,它們的 NotificationName 必須一致,這是通知中心唯一能關聯的方式,以此來判斷是哪個發的通知,又有哪個來接收通知。
在添加觀察者的view 中,獲取傳遞過來的account信息
-(void)didLoginWithAccount:(NSNotification*)notification {
MyAccount *account=(MyAccount*)[notification object];
//todo....
}