所以我有一个类,它在初始化时将自己添加为 NSNotificationService 中的观察者,并且在 dealloc 上将自己从 NSNotificationCenter 中删除。
一切正常,我发布通知并收到它一次并带有正确的对象。
然后我做了一个循环并添加了三个视图。每个视图都被调用一次,所有视图都将自己添加为观察者。
现在,当我发布通知时,每个视图都会收到 3 次通知!(共 9 个)
所以我将我的添加观察者移动到另一个方法,并且只在两个视图(来自这三个)上调用它。
现在每个视图都被调用了两次(三个视图被调用了两次,总共 6 个),尽管第三个实例甚至没有被添加为观察者(观看了 metgod,没有按预期被调用)。
现在我删除了循环并创建了三个视图。并且只添加了一个作为观察者。三个人都叫了...
这是已知问题还是我发现了新问题?
XCode 4.6 iOS 6.1
更新 - - - - - - - -
问题是,我的视图实际上只是一个实例。
此代码生成三个视图,它们都是相同的一个视图。
CustomViewController * hw1 = [[CustomViewController alloc] init];
[hw1 setupWithFrame:CGRectMake(
contentScrollView.frame.size.width * 0 + contentScrollView.frame.size.width/2 - 250 ,
contentScrollView.frame.size.height / 2 - 250,500,500)];
[contentScrollView addSubview:hw1.view];
CustomViewController * hw2 = [[CustomViewController alloc] init];
[hw2 setupWithFrame:CGRectMake(
contentScrollView.frame.size.width * 1 + contentScrollView.frame.size.width/2 - 250 ,
contentScrollView.frame.size.height / 2 - 250,500,500)];
[contentScrollView addSubview:hw2.view];
CustomViewController * hw3 = [[CustomViewController alloc] init];
[hw3 setupWithFrame:CGRectMake(
contentScrollView.frame.size.width * 2 + contentScrollView.frame.size.width/2 - 250 ,
contentScrollView.frame.size.height / 2 - 250,500,500)];
[contentScrollView addSubview:hw3.view];
更改 hw1 中的内容,更改 hw2 和 hw3 中的内容。
SetupWithFrame 只是一种分配和添加已定义框架的子视图的方法。