这两个预定方法调用之间的区别 - iOS

时间:2015-03-28 15:55:33

标签: ios methods facebook-sdk-4.0

我已经看过几次,但似乎无法找到两者之间有什么区别......

[[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示例)超过第二个。

1 个答案:

答案 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;
}