[英]Xcode project works in Simulator, not on device
仍在開發我的閃存卡主題應用程序。 完全一頭霧水。 很多可能的重要信息。
我有一個在模擬器和多個設備上都可以完美運行的版本。 但是,我在提交到 App Store 時犯了一個錯誤(錯誤的 Bundle ID 和名稱),所以我創建了一個新項目並復制並粘貼了代碼和故事板。 (我不只是移動文件;我重新創建了它們並復制了代碼。)
第一個問題是它不會構建,因為“RootViewController.o 和 DescendantViewController.o 中的“重復符號 _answers”。 並且有 3 個這樣的重復符號。
是的,我已經在我的 RootVC 和 DescedantVC 的實現中聲明了NSMutableArray *answers
,所以我承認這是可疑的,除了......它與工作版本中的代碼完全相同。
盡管如此,我看到了清理代碼的機會,所以我在我的 RootVC 中創建了一個@property (weak, nonatomic) NSMutableArray *answers
並將根視圖控制器和后代視圖控制器中的代碼更改為引用self.answers
。 它編譯沒有任何問題。
它在模擬器中完美運行。 因為我剛剛將整個代碼庫復制到一個新項目中,所以我測試了所有內容 - 沒有問題。 我很興奮,所以我做了所有步驟提交到App Store,除了最后一個“Submit for Review”。
我想向我的朋友炫耀,所以我附上了我的 iPhone 6,編譯它,運行它,當我選擇“播放”時 - 崩潰!
以下行是罪魁禍首。
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)
。
那為我解決了。
現在適用於模擬器和設備。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.