0

シミュレーターでは完全に動作するアプリがありますが、iPod Touch(第4世代)では失敗します。その理由を知りたいのですが。UINavigationController失敗しているのは、のルートに6つの画像を表示し、viewControllerを押して、食品画像の配列をインスタンス化し、すべての画像を並べて保持するビューを作成し、表示領域を移動するシンプルなインタラクティブメニューです。ルートビューでクリックされた画像に関連する画像の上。デバイスで実行すると、配列は2つの画像へのポインターでのみインスタンス化され、配列を使用して画像を並べて作成すると例外がスローされます。

//code from the pushed view controller
- (void)setupScrollView:(UIScrollView*)scrMain {
    // we have 6 images here.
    // we will add all images into a scrollView & set the appropriate size.
    NSMutableArray *array = [NSArray arrayWithObjects:
                        [UIImage imageNamed:@"shrimpquesadilla.jpg"],
                        [UIImage imageNamed:@"pulledpork.jpg"],
                        [UIImage imageNamed:@"filetMignon.jpg"],
                        [UIImage imageNamed:@"Reuben.jpg"],
                        [UIImage imageNamed:@"cajunshrimp.jpg"],
                        [UIImage imageNamed:@"primerib.jpg"], nil];
    NSLog(@"stuff: %@", array);
    for (int i=1; i<=6; i++) {
        UIImage *image = [array objectAtIndex:(i-1)];
        UIImageView *imgV = [[UIImageView alloc] 
            initWithFrame:CGRectMake((i-1)*scrMain.frame.size.width, 
            0, scrMain.frame.size.width, (scrMain.frame.size.height - 90))];
        imgV.contentMode=UIViewContentModeScaleToFill;
        [imgV setImage:image];
        imgV.tag=i+1;
        [scrMain addSubview:imgV];
    }
    [scrMain setContentSize:CGSizeMake(scrMain.frame.size.width*6, 
         scrMain.frame.size.height)];
    [scrMain scrollRectToVisible:CGRectMake(self.count*scrMain.frame.size.width, 
         0, scrMain.frame.size.width, scrMain.frame.size.height) animated:YES];
}

シミュレーターを実行したときのNSLogの出力:

2012-08-20 09:51:23.812 DemoTabbed[1545:11603] stuff: (
    "<UIImage: 0x7931150>",
    "<UIImage: 0x6e63270>",
    "<UIImage: 0x6e67700>",
    "<UIImage: 0x6e68040>",
    "<UIImage: 0x6e5c700>",
    "<UIImage: 0x6e64210>"
)

そして、デバイスで実行したときの出力:

2012-08-20 10:26:50.211 DemoTabbed[2128:707] stuff: (
    "<UIImage: 0x197e20>",
    "<UIImage: 0x181270>"
)

そして、範囲外のインデックスの標準エラーがあります。関連性があるかどうかはわかりませんが、シミュレーターで動作しているにもかかわらず、2つのアイコンがデバイスに読み込まれていません。さらにコードが必要な場合、またはアプリやその動作について質問がある場合は、お知らせください。さらに追加させていただきます。

編集:画像が配列にインスタンス化される順序を並べ替えてみましたが、何も変更されていません。出力stllは、2つの画像のみが配列によって示されていることを示しました。

4

1 に答える 1

3

iOSにはケースセンシティブなファイルシステムがあります。@ "filetMignon.jpg"ファイルにケースの問題があり、nil imageに解決され、配列要素が早期に終了します。

これを修正するには、画像をロードするときと同じ大文字小文字で名前が付けられていることを確認してください(常に小文字の画像名を使用することをお勧めします)。

OS Xはケースに依存しない(99%の場合)ファイルシステムを使用しているため、シミュレータでは問題になりません。つまり、@"filetMignon.jpg"と@"filetmignon.jpg"は同じファイルに解決されます。

于 2012-08-20T15:35:30.353 に答える