Xcode 项目在模拟器中运行,而不是在设备上运行
Xcode project works in Simulator, not on device
仍在开发我的闪存卡主题应用程序。完全莫名其妙。很多可能重要的信息。
我有一个版本可以在模拟器和多个设备上完美运行。但是,我在提交到 App Store 时出错(错误的 Bundle ID 和名称),所以我创建了一个新项目并复制并粘贴了代码和故事板。 (我不只是移动文件;我重新创建了它们并复制了代码。)
第一个问题是它无法构建,因为“重复符号 _answers in”RootViewController.o 和 DescendantViewController.o。并且有3个这样的重复符号。
是的,我已经在我的 RootVC 和 DescedantVC 的实现中声明了 NSMutableArray *answers
,所以我承认这是可疑的,除了......它与有效版本中的代码完全相同。
尽管如此,我看到了清理代码的机会,所以我在我的 RootVC 中创建了一个 @property (weak, nonatomic) NSMutableArray *answers
,并将根视图控制器和后代视图控制器中的代码更改为引用 self.answers
。它编译没有任何问题。
它运行在模拟器中完美。因为我刚刚将整个代码库复制到一个新项目中,所以我测试了所有内容——没问题。我非常兴奋,所以我完成了所有提交到 App Store 的步骤,除了最后一个“提交审核”。
我想向我的朋友炫耀,所以我附上我的 iPhone 6,编译它,运行 当我 select “播放”时 - 崩溃!
下面一行是罪魁祸首。
answers = [self pickWrongAnswersIgnoringCard:questionCard];
在模拟器和设备上,这个方法的最后一行是:
return wrongAnswers;
在这两种情况下,wrongAnswers
是一个包含 3 个项目的数组。
在模拟器中,answers
也有3个项目。在我的 iPhone 上,answers
为零。
有人知道这是什么吗?我唯一能想到的是,我创建了一年多前有效的项目和今天失败的项目,所以这两个项目中的某些 Apple 设置可能不同?否则,我很难过。
编辑
请求的函数:
-(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
}
我想通了,虽然我不完全明白。
我从@property (weak, nonatomic)
变成了@property (strong, nonatomic)
。
这帮我解决了。
现在可以在模拟器和设备上运行。
仍在开发我的闪存卡主题应用程序。完全莫名其妙。很多可能重要的信息。
我有一个版本可以在模拟器和多个设备上完美运行。但是,我在提交到 App Store 时出错(错误的 Bundle ID 和名称),所以我创建了一个新项目并复制并粘贴了代码和故事板。 (我不只是移动文件;我重新创建了它们并复制了代码。)
第一个问题是它无法构建,因为“重复符号 _answers in”RootViewController.o 和 DescendantViewController.o。并且有3个这样的重复符号。
是的,我已经在我的 RootVC 和 DescedantVC 的实现中声明了 NSMutableArray *answers
,所以我承认这是可疑的,除了......它与有效版本中的代码完全相同。
尽管如此,我看到了清理代码的机会,所以我在我的 RootVC 中创建了一个 @property (weak, nonatomic) NSMutableArray *answers
,并将根视图控制器和后代视图控制器中的代码更改为引用 self.answers
。它编译没有任何问题。
它运行在模拟器中完美。因为我刚刚将整个代码库复制到一个新项目中,所以我测试了所有内容——没问题。我非常兴奋,所以我完成了所有提交到 App Store 的步骤,除了最后一个“提交审核”。
我想向我的朋友炫耀,所以我附上我的 iPhone 6,编译它,运行 当我 select “播放”时 - 崩溃!
下面一行是罪魁祸首。
answers = [self pickWrongAnswersIgnoringCard:questionCard];
在模拟器和设备上,这个方法的最后一行是:
return wrongAnswers;
在这两种情况下,wrongAnswers
是一个包含 3 个项目的数组。
在模拟器中,answers
也有3个项目。在我的 iPhone 上,answers
为零。
有人知道这是什么吗?我唯一能想到的是,我创建了一年多前有效的项目和今天失败的项目,所以这两个项目中的某些 Apple 设置可能不同?否则,我很难过。
编辑
请求的函数:
-(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
}
我想通了,虽然我不完全明白。
我从@property (weak, nonatomic)
变成了@property (strong, nonatomic)
。
这帮我解决了。
现在可以在模拟器和设备上运行。