仍然使用我的闪存卡主题应用程序。完全莫名其妙。很多可能很突出的信息。
我有一个完美无缺的版本,无论是在模拟器还是在多个设备上。但是,我在提交到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
}
答案 0 :(得分:0)
我想通了,即使我不完全明白。
我从@property (weak, nonatomic)
更改为@property (strong, nonatomic)
。
这解决了我。
现在可以在模拟器和设备上使用。