1

いくつかのUIScrollViewを動的に作成し、それらにコンテンツを入力する必要があります。デリゲートを自分自身に設定してリストをパンする場合を除いて、これはすべて問題ありません。この例外が発生します。

キャッチされなかった例外'NSInvalidArgumentException'が原因でアプリを終了しています、理由:'-[__ NSCFString scrollViewDidScroll:]:認識されないセレクターがインスタンス0x7581230に送信されました'

NSCFStringは明らかに私のViewController(プロトコル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をターゲットにしています。そうでない場合は、自分でメモリを台無しにしたと思いますが、今は同じコントロールがありません。

この問題のデバッグに苦労しています。続行する方法についてのヘルプをいただければ幸いです。

4

1 に答える 1

2

ああ。私は明らかに間違った場所を見ていました。ビュー コントローラーは .xib を介して追加され、ビューはステージ上のサブビューを指していました。ただし、メインView ControllerのView ControllerにIBOutletを作成して、メモリ内にとどまるようにする必要がありました。うまくいけば、これは同様の問題を抱えている他の誰かを助けることができます:)

于 2012-12-07T13:12:16.093 に答える