我有以下代码:

    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 232013-05-12 15:21:08.545 RouteApp[5673:907] imageArray count 46
而如果我在模拟器中运行,我将得到32和64的期望值。
(如数字已切换)

是什么原因造成的?

最佳答案

看起来有些图像在iPhone上丢失了,所以这一行

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

过滤掉它们。如下更改此行以查看哪些图像不存在:
if(img != nil) {
    [imageArray addObject:img];
} else {
    NSLog("Image 'wave%i.png' is missing", i);
}

关于ios - 模拟器中的阵列大小与iPhone上不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16507836/

10-12 13:29