1

我有以下代码:

    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,就像我期望的那样。(就像数字交换一样)

什么会导致这种情况?

4

2 回答 2

2

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

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

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

if(img != nil) {
    [imageArray addObject:img];
} else {
    NSLog("Image 'wave%i.png' is missing", i);
}
于 2013-05-12T13:28:43.513 回答
0

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

发生这种情况的最常见方式是类似于wave01.pngvs. wave01.PNG

否则,它可能类似于wave01.pngvs.Wave01.png等。

于 2013-05-12T19:39:38.143 回答