簡體   English   中英

Xcode 項目在模擬器中工作,而不是在設備上

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM