2 developerwab developerWab 于 2013.04.07 14:53 提问

NSnotification 传递问题

有一个这样的方法:

-(void)didLoginWithAccount(MyAccount *)account

给这个方法添加了observer :

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didLoginWithAccount:)];

问题是发了通知,怎么传递一个MyAccount对象。

2个回答

zhanglei5415
zhanglei5415   Rxr 2013.04.08 20:51
已采纳

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....
}
yanjiee
yanjiee   2013.04.08 14:24

[[NSNotificationCenter defaultCenter] postNotificationName:@"NOTIFY" object:nil userInfo:xxx]

userInfo可以传一个参数。

-(void)didLoginWithAccount(MyAccount *)account这个应该定义成:
-(void)didLoginWithAccount:(NSNotification *) notification
参数notification有一个userInfo的成员,是一个Dictionary类型的。

Csdn user default icon
上传中...
上传图片
插入图片