我已经看过几次,但似乎无法找到两者之间有什么区别......
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loginViewFetchedUserInfo:)
name:FBSDKProfileDidChangeNotification
object:nil];
- (void)loginViewFetchedUserInfo:(NSNotification *)notification
和
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loginViewFetchedUserInfo)
name:FBSDKProfileDidChangeNotification
object:nil];
- (void)loginViewFetchedUserInfo
我知道(void)methodname:(TYPE *)newName
可以将值传递给方法,但我不知道上面两者中的区别是什么以及为什么要执行第一个(在Facebook中使用) SDK示例)超过第二个。
答案 0 :(得分:3)
第一种方法将NSNotification
对象传递给方法。这种方式允许您访问有关通知的信息。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loginViewFetchedUserInfo:)
name:FBSDKProfileDidChangeNotification
nil];
例如,如果通知是使用userInfo
字典
NSDictionary *userInfo = @{@"Blah" : @"foo"};
[[NSNotificationCenter defaultCenter] postNotificationName:FBSDKProfileDidChangeNotification object:self userInfo:userInfo];
并且您想要在方法中访问userInfo
。您还可以访问通知的发件人,即通知的object
。
- (void)loginViewFetchedUserInfo:(NSNotification *)notification
{
NSDictionary *userInfo = notification.userInfo;
NSObject *sender = notification.object;
}