我需要動態地創建一些UIScrollView並將其填充內容。這是除了當我設置委託自我和平移列表中我得到這個例外,所有的好:UIScrollView失去對委託的引用
終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因是:「 - [__ NSCFString scrollViewDidScroll:]:無法識別的選擇發送到例如0x7581230'
NSCFString顯然不是我的視圖控制器(實現協議UIScrollViewDelegate),所以從我收集莫名其妙的記憶被搞砸了,並沒有保持正確的參考。有時這可能是別的東西太強烈指向的東西是錯誤的記憶
下面是創建列表中的代碼:
for (NSUInteger i = 0; i < self.stories.currentStory.selectableWordCount; i++) {
UIScrollView *list = [[UIScrollView alloc] init];
list.alwaysBounceVertical = YES;
list.showsVerticalScrollIndicator = NO;
list.clipsToBounds = NO;
list.delegate = self;
list.pagingEnabled = YES;
[self.view addSubview:list];
.. // add UILabels to the list, set the frame, contentSize etc
[self.wordLists addObject:list]; // this is a @property (nonatomic, strong) NSMutableArray, declared in a private interface()
}
如果我的NSLog它是正確的委託。 respondsToSelector
也很好。有趣的是,如果我註釋掉scrollViewDidScroll:
respondsToSelector:
不再匹配(可能是因爲這個原因),UIScrollView將不會再嘗試調用這個方法。這意味着它可以正確地到達委託來檢查方法的可用性,但是當它被調用時會出現問題。
我使用ARC定位iOS5。如果不是這種情況,我會假設我自己搞砸了記憶,但現在我沒有相同的控制。
我有一個很難調試這個問題,對如何進行任何幫助,將不勝感激