数组大小在模拟器中不同然后在iPhone上

时间:2013-05-12 13:24:45

标签: ios arrays

我有以下代码:

    NSMutableArray *imageArray = [[NSMutableArray alloc] init];

    for(int i = 1; i <= 32; i++) {
        //NSString *str = [NSString stringWithFormat:@"marker_%i.png", i];
        NSString *str = [NSString stringWithFormat:@"wave%i.png", i];
        UIImage *img = [UIImage imageNamed:str];
        if(img != nil) {
            [imageArray addObject:img];
        }

    }
    NSLog(@"imageArray count %i",[imageArray count]);

    NSMutableArray *reverseArray = [NSMutableArray arrayWithArray:imageArray];
    [[reverseArray reverseObjectEnumerator] allObjects];
    [imageArray addObjectsFromArray:reverseArray];

    NSLog(@"imageArray count %i",[imageArray count]);

如果我在iphone上运行它,我会得到:

2013-05-12 15:21:08.539 RouteApp[5673:907] imageArray count 23

2013-05-12 15:21:08.545 RouteApp[5673:907] imageArray count 46

如果我在模拟器中运行,我会得到32和64,就像我期望的那样。 (就像数字被切换一样)

导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:2)

看起来iPhone上缺少一些图像,所以这一行

if(img != nil) {
    [imageArray addObject:img];
}

过滤掉它们。如下更改此行以查看哪些图像不存在:

if(img != nil) {
    [imageArray addObject:img];
} else {
    NSLog("Image 'wave%i.png' is missing", i);
}

答案 1 :(得分:0)

设备上的文件名区分大小写,但不在模拟器上。您的某些图像名称可能与您期望的格式略有不同。

最常见的方式是wave01.pngwave01.PNG

否则它可能类似于wave01.pngWave01.png等等。