为什么模拟器iPhone / iPad与iPhone Retina(4英寸)和iPhone Retina(4英寸64位)的效果不同

时间:2014-08-18 15:14:00

标签: iphone ipad

这是我第一次提问,因为我是新来的。非常感谢您的回答!我很感激你的时间。

使用 Xcode 5.1.1

这是我的问题,在模拟器或实际设备上进行测试时,结果会有所不同。 查看食物图片上附带的截图。当我在模拟器iPhone Retina(4英寸64位)上测试时,结果是正确的,食物图像正确显示并与文本匹配。

当我在模拟器iPhone Retina(4英寸)上测试时,结果不正确,食物图像显示与文本不匹配。

我也测试实际设备,如iPad Air显示器正确但iPad3不正确。食物图像显示与文本不匹配。

你能帮我解决一下这个问题吗?我不明白为什么相同的代码,但它产生不同的结果。

for (NSUInteger i=0; i<30; i++)

{
    UIImage *anImage = [UIImage imageNamed:[NSString stringWithFormat:@"food%d.jpg", (int)i+1]];

    [arrimagefood addObject:anImage];
}
[ArrforAllDicFood addObjectsFromArray:[DictionaryForEnglishFood allKeys]];
[TableForFood reloadData];

从多个评论中移动并格式化代码:

- (void)viewDidLoad {
    [super viewDidLoad]; DictionaryForEnglishFood=[[NSMutableDictionary alloc]init];
    DictionaryForLaoFood=[[NSMutableDictionary alloc]init];
    DictionaryForPythnFood=[[NSMutableDictionary alloc]init];
    DictionaryForImageFood=[[NSMutableDictionary alloc]init];
    DictionaryForAudioFood=[[NSMutableDictionary alloc]init];
    ArrforAllDicFood=[[NSMutableArray alloc]init];
    arrimagefood=[[NSMutableArray alloc]init];

    // add English German food
    //    [DictionaryForEnglishFood setValue:@"Asparagus" forKey:@"food1"];//5
    //    [DictionaryForEnglishFood setValue:@"Lobscouse" forKey:@"food2"];//29
    //    [DictionaryForEnglishFood setValue:@"Sauerkraut" forKey:@"food3"];//22
    //    [DictionaryForEnglishFood setValue:@"Potatoes" forKey:@"food4"]; //16
    //    [DictionaryForEnglishFood setValue:@"Pumpkin bread" forKey:@"food5"];//11
    //    [DictionaryForEnglishFood setValue:@"Asparagus Sauce" forKey:@"food6"];//6
    //    ......

    // Add German words
    //    [DictionaryForLaoFood setValue:@"Spargel" forKey:@"food1"];//5
    //    [DictionaryForLaoFood setValue:@"Labskaus" forKey:@"food2"];//29
    //    [DictionaryForLaoFood setValue:@"Sauerkraut" forKey:@"food3"];//22
    //    [DictionaryForLaoFood setValue:@"Pellkartoffeln" forKey:@"food4"]; //16
    //    [DictionaryForLaoFood setValue:@"Kürbisbrot" forKey:@"food5"];//11
    //    [DictionaryForLaoFood setValue:@"Spargelsoße" forKey:@"food6"];//6
    //    ........

    // Add German pronounciation
    //    [DictionaryForPythnFood setValue:@"Shpahrg-uhl" forKey:@"food1"];//5
    //    [DictionaryForPythnFood setValue:@"Lahbs-cows" forKey:@"food2"];//29
    //    [DictionaryForPythnFood setValue:@"Sour-krout" forKey:@"food3"];//22
    //    [DictionaryForPythnFood setValue:@"Pehl-car-tohf-ehln" forKey:@"food4"]; //16
    //    [DictionaryForPythnFood setValue:@"Koorb-is-broht" forKey:@"food5"];//11
    //    [DictionaryForPythnFood setValue:@"Shpahrg-uhl-sohs-uh" forKey:@"food6"];//6
    //    ......

    // Add German audio
    //    [DictionaryForAudioFood setValue:@"aspargus" forKey:@"food1"];//5
    //    [DictionaryForAudioFood setValue:@"lobscouse" forKey:@"food2"];//29
    //    [DictionaryForAudioFood setValue:@"sauerkraut" forKey:@"food3"];//22
    //    [DictionaryForAudioFood setValue:@"potatoes" forKey:@"food4"]; //16
    //    [DictionaryForAudioFood setValue:@"pumpkin bread" forKey:@"food5"];//11
    //    [DictionaryForAudioFood setValue:@"aspargus sauce" forKey:@"food6"];//6
    //    ....

    for (NSUInteger i=0; i<30; i++) {
        UIImage *anImage = [UIImage imageNamed:[NSString stringWithFormat:@"food%d.jpg", (int)i+1]];
        [arrimagefood addObject:anImage];
    }
    [ArrforAllDicFood addObjectsFromArray:[DictionaryForEnglishFood allKeys]];
    [TableForFood reloadData];
}


-(UITableViewCell )tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if([[ UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone) {
        static NSString *CellIdentifier = @"CustomCellPlace";
        CustomCellPlace *cell= (CustomCellPlace) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    //  create a uitableviewcell
    //  if(cell == nil) {
    //      NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCellPlace" owner:self options:nil];
    //      for (id currentObject in topLevelObjects) {
    //          if ([currentObject isKindOfClass:[UITableViewCell class]]) {
    //              cell = currentObject;
    //          }
    //      }
    //  }

        cell.tag=indexPath.row;
        cell.backgroundColor = [UIColor clearColor];
        cell.backgroundView = [UIView new] ;
        cell.selectedBackgroundView = [UIView new] ;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;


        cell.lb1.text=[DictionaryForEnglishFood objectForKey:[ArrforAllDicFood objectAtIndex:indexPath.row]];
        cell.lb2.text=[DictionaryForLaoFood objectForKey:[ArrforAllDicFood objectAtIndex:indexPath.row]];
        cell.lb3.text=[DictionaryForPythnFood objectForKey:[ArrforAllDicFood objectAtIndex:indexPath.row]];
        for(int i=0; i<[arrimagefood count];i++) {
            NSUInteger str=indexPath.row;
            cell.imageview.image=[arrimagefood objectAtIndex:str];
        } return cell;
    }
}


-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [ArrforAllDicFood count];
}

问题在于测试模拟器iPhone(4英寸)或iPhone5等实际设备时,结果(文本)没有订购/匹配食物图像但运行模拟器iPhone(4英寸64位)匹配/订购与食物形象。那么如何更改代码以使其适用于iPhone(4英寸)和iPhone(4英寸64位)。

食物图像显示从1-30的顺序,但只有文本以某种方式改变,我不知道该怎么做。再次感谢。

iPhone Retina(4-inch 64-bit) iPhone Retina(4-inch)

1 个答案:

答案 0 :(得分:1)

字典没有订单,因此`allKeys'方法可以返回任何订单。甚至不能保证订单从一个呼叫到另一个呼叫是相同的。添加,删除或更改条目也可能导致返回不同的订单。

您需要做的是将图像名称(或名称索引)与食物名称一起包含在一个结构中。依靠订单不是一个好的解决方案。

模拟器就是这样,它运行的代码是为英特尔处理器模拟设备而编译的。设备代码是为ARM处理器编译的。人们可以预期,因为任何键的顺序是正确的,所以你会看到差异。

模拟器通过模拟相同的指令运行其他处理器代码,结果在每个设备上的顺序相同,但是也可以按任何顺序排列。