Xcode项目在Simulator中工作,而不在设备上

时间:2016-05-19 16:28:04

标签: objective-c iphone xcode runtime-error

仍然使用我的闪存卡主题应用程序。完全莫名其妙。很多可能很突出的信息。

我有一个完美无缺的版本,无论是在模拟器还是在多个设备上。但是,我在提交到App Store时出错了(错误的Bundle ID和Name),所以我创建了一个新项目并复制并粘贴了代码和故事板。 (我不只是移动文件;我重新创建了它们并复制了代码。)

第一个问题是它不会构建,因为“RootViewController.o和DescendantViewController.o中的重复符号_answers”。并且有3个这样的重复符号。

是的,我已经在我的RootVC和DescedantVC的实现中声明了NSMutableArray *answers,所以我承认这是可疑的,除了....它的代码与有效的版本完全相同。

然而,我看到了清理代码的机会,因此我在RootVC中创建了@property (weak, nonatomic) NSMutableArray *answers并更改了根和后代View Controllers中的代码以引用self.answers。它编译没有任何问题。

它完美地在模拟器中运行。因为我刚刚将整个代码库复制到一个新项目中,所以我测试了所有内容 - 没有问题。我很兴奋,所以我会做所有提交到App Store的步骤,除了最后一个“提交审核。”

我想向我的朋友炫耀,所以我附上我的iPhone 6,编译它,运行它,当我选择“播放”时 - 崩溃!

以下行是罪魁祸首。

answers = [self pickWrongAnswersIgnoringCard:questionCard];

在模拟器和设备上,此方法的最后一行是:

return wrongAnswers;

在这两种情况下,wrongAnswers都是一个包含3个项目的数组。

在模拟器中,answers也有3个项目。在我的iPhone上,answers为零。

有谁知道这可能是什么?我唯一能想到的是我创建了一年前工作的项目和今天失败的项目,所以这两个项目中的一些Apple设置可能有所不同吗?否则,我很难过。

我希望有人有个主意。

感谢。

P上。 S.我在StackOverflow上查看了其他帖子,但没有人帮助过我。

编辑:函数,按要求:

-(NSMutableArray *)pickWrongAnswersIgnoringCard:(FlashCard *)questionCard {
  NSMutableArray *wrongAnswers = [[NSMutableArray alloc] init];

  FlashCard *randomCard;

  for (int i=1; i<4; i++) {
    do {
      randomCard = [self pickARandomCardFromDeck:wrongAnswersSource];
    } while ([randomCard.name isEqualToString:questionCard.name] || [wrongAnswers containsObject:randomCard]);

    [wrongAnswers addObject:randomCard];
  }

  return wrongAnswers; // device or simulator, wrongAnswers.count = 3
}

1 个答案:

答案 0 :(得分:0)

我想通了,即使我不完全明白。

我从@property (weak, nonatomic)更改为@property (strong, nonatomic)

这解决了我。

现在可以在模拟器和设备上使用。