添加&在同一类中发布'NSNotificationCenter'

时间:2013-07-21 05:47:08

标签: ios objective-c nsnotificationcenter

有没有办法在类别以外的类中添加观察者?我可以全局添加的东西。

我在下面尝试了类似的东西,但它不起作用。请建议一种方法吗? 这是在HomeVC.m,我也发布了这个类的通知。

UIStoryboard *storybrd = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
HomeViewController *controller =[storybrd instantiateViewControllerWithIdentifier:@"VC123"];

[[NSNotificationCenter defaultCenter] addObserver:controller selector:@selector(somethingHappens:) name:@"notificationName" object:nil];

此方法在VC123.m

  

- (void)somethingHappens:(NSNotification *)notification {}

1 个答案:

答案 0 :(得分:0)

当你这样做时:

HomeViewController *controller =[storybrd instantiateViewControllerWithIdentifier:@"VC123"];

您将获得控制器的新实例。如果是第一次,你保留该实例并重复使用,那就没问题了。但是你可能正在做的事情并不是保持它,而是它被摧毁了。这通常会导致崩溃(除非控制器在它被销毁之前将其自身作为观察者移除,它应该)。

你可以添加任何实例作为观察者,它不需要专门来自类中,你只需要它的一个实例 - 那个实例应该是现有实例,而不是你的新实例刚刚创建。