1

除了方法所在的类之外,有没有办法在类中添加观察者?我可以在全球范围内添加一些东西。

我在下面尝试过类似的方法,但它不起作用。请指教这样做的方法?这是在 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*) 通知 { }

4

1 回答 1

0

当你这样做时:

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

你得到一个新的控制器实例。如果这是第一次并且您保留该实例并重用它,那很好。但是您可能正在做的不是保留它,因此它会被破坏。这通常会导致崩溃(除非控制器在销毁之前将自己作为观察者移除,它应该这样做)。

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

于 2013-07-21T06:37:06.547 回答