因此,我有一個類,它將自己添加爲NSNotificationService中的觀察者,並將其自身從NSNotificationCenter中移除。NSNotificationCenter將所有實例添加爲觀察者
一切都很好,我發佈通知並接收一次正確的對象。
然後我做了一個循環,並添加了三個視圖。每個視圖都被稱爲init一次,所有視圖都將自己添加爲觀察者。
現在,當我發佈通知,每個視圖收到三次通知! (共9個)
所以我把我的添加觀察者移到另一個方法,並只在兩個視圖(從這三個視圖)上調用它。
現在每個視圖都被調用過兩次(三次視圖被稱爲兩次,共有6次),儘管第三個實例甚至沒有添加爲觀察者(觀察過的metgod,沒有按預期調用)。
現在我刪除循環並創建了三個視圖。並且只添加一個觀察者。所有三個被叫...
這是已知的問題還是我找到了新的東西?
的XCode 4.6的iOS 6.1
UPDATE ---------------
的問題是,我的觀點實際上就是一個實例。
此代碼生成三個視圖都是同一個視圖。
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只是一種分配和添加已定義幀的子視圖的方法。
你可以發佈示例代碼?如何添加觀察者? – 2013-03-15 09:21:33
你一定做錯了什麼...... – 2013-03-15 09:23:24
好吧,所以我發現所有這些視圖實際上只是一個實例,即使我每次都使用[[View alloc] init]創建它們。 – avuthless 2013-03-15 09:23:58