0

理解できない例外が発生しています。ここにこのコードがあります:

newControllers = [[NSMutableArray alloc] initWithCapacity:9];  // Only allocate what we need


    // Ok, add the new thumb UIs
    for (int i = 0; i < 3; ++i) {

        for (int j = 0; j < 3; ++j) {

            // Create the view controller
            ThumbViewController *newThumbVC = [[ThumbViewController alloc]
                                                   initWithNibName:@"NewThumbDisplayView" bundle:nil];
            // Set the info
            newThumbVC.localInfo = [newInfo objectAtIndex:(i * 3) + j];

            // Place it properly
            [self.scrollViewContent addSubview:newThumbVC.view];
            CGRect rect = CGRectMake(8 + (j * 99), 363 + (i * 134), 106, 142);
            newThumbVC.view.frame = rect;
            [self.scrollViewContent bringSubviewToFront:newThumbVC.view];

            [newControllers addObject:newThumbVC];
        }
    }

シミュレーターで実行すると、これは完全に機能します。今朝、携帯電話で実行しようとしましたが、次のスタックで CGRectMake を呼び出すと例外が発生します (出力ウィンドウに何も出力されないため、これを理解するのがさらに面倒になることに注意してください)。

スレッド 1、キュー : com.apple.main-thread

    #0  0x35220238 in objc_exception_throw ()
    #1  0x3751b788 in +[NSException raise:format:arguments:] ()

ここで何が正しくないかを誰かが指摘できれば、とても感謝しています。

4

3 に答える 3

1

CGRectMake は単なるマクロなので問題ありません。実際に必要なビュー コントローラーは 1 つだけで、一連のコントローラーではなく一連のビューを管理できます。複数のコントローラーを使用することはお勧めできません。

于 2012-06-15T15:58:53.433 に答える
0

これは、デバイス上の iOS バージョンと実行していた XCode のバージョンのバージョンが一致しないという問題であることが判明しました。XCode を更新すると、すべてが処理されます。

于 2012-06-15T21:17:23.017 に答える
0

nib が読み込まれた後に遅延して構築される ThumbViewController のビューを構築する際に、競合状態が発生していると思います。新しい vc のビューをサブビューとして追加すると、クラッシュが発生していると思います。シミュレーターでは、nil 以外になるのに十分な速さでビルドされる可能性があります。

SDK は、一度に複数の VC を担当することを推奨しません (MPMoviePlayerController などのいくつかの例外のみ)。親指のためにVCが本当に必要ですか? 名前だけ見ると、どちらかというとビューのように聞こえます。

VC を使用する必要がある場合は、VC に行/列を渡し、viewDidLoad (またはそれ以降) でフレーム化する必要があります。

于 2012-06-15T15:39:51.787 に答える