簡體   English   中英

UIViewController的子類無法調用loadView方法

[英]subclass of UIViewController is unable to call loadView method

我有一個UIViewController的子類,當它從另一個類中調用時,該應用程序將凍結-我使用了Xcode調試器,並發現當我嘗試訪問該類的view屬性時,該應用程序將凍結。 另一個奇怪的事情是,當我在調試器控制面板中鍵入“ po objectOfTheProblematicClass.view”時,調試器停止響應。 我使用的代碼與此類似:

    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
WTStickyViewController *stickyVC = [sb instantiateViewControllerWithIdentifier:@"WTStickyViewController"];
stickyVC.sticky = sticky;
// Setup view controller containment:
[self.parentViewController addChildViewController:stickyVC];

self.containerView = self.parentViewController.view;
[self.containerView addSubview:stickyVC.view];

WTStickyViewController是UIViewController的子類。 應用到達時凍結

       [self.containerView addSubview:stickyVC.view];

但這是因為這是第一次調用stickyVC.view。
如果例如我會在代碼中放置某處

UIView *viewForExample = stickyVC.view;

該應用程序將凍結在那里。
當在裝有iOS 8的設備上編譯時,完全相同的應用程序可以正常運行,但在iOS 9上存在此問題。如果有人知道為什么會這樣,並且有解決方案,那就太好了。 謝謝。

我有一個類似的問題,這絕對令人發瘋。 由於應用程序死鎖,因此在調試過程中,資源監視器中的CPU占用了大約100%的內存。 打印到控制台或僅通常訪問視圖控制器的view屬性會導致此行為。 最終,對我來說,“修復”的是將其從基本本地化文件中刪除。 我知道這沒有道理,但我會盡力而為。

我正在維護一個舊的通用應用程序,該應用程序具有2個名為Main_iPhone和Main_iPad的“主要”故事板,您可能會猜測它們是根據要啟動的設備動態加載的。 我注意到,只有iPhone筆尖視圖如上所述陷入僵局,而iPad加載正常。 我只能說iPhone故事板啟用了本地化,而iPad故事板未啟用本地化。 因此,這是我從基本本地化中大致刪除的步驟(您可能希望在單獨的分支/沙盒中執行此操作,以確保在刪除項目引用之前可以正常工作):

  1. 右鍵單擊有問題的視圖和/或有問題的故事板,在finder中顯示。 對我來說,它位於Base.lproj文件夾中,符合預期。
  2. [Re]將文件移動到其他目錄,以便Xcode找不到項目的鏈接(文件在文件瀏覽器中變為紅色)。 按Delete鍵從項目本身的項目文件引用中刪除該文件。
  3. 將文件重新添加到存儲庫/項目結構中的新位置,以便Xcode將其作為新文件。 確保您對文件的所有引用都更新到新位置。
  4. 驗證您的情節提要/ xib文件是否已不再本地化,清理項目,重新運行並查看問題是否仍然存在(參見圖片)。 非本地化設置

您也可以只使用右側文件屬性視圖中的“更新位置”按鈕來更新文件位置(請參見其他圖片)。 在此處輸入圖片說明

不知道這是否可以解決問題,但我想我會分享幫助我的機會,以幫助其他人。

已將一個錯誤報告發送給Apple,希望它會盡快得到解決-問題確實存在於Xcode 7中。如果遇到類似的問題,可以執行以下一項操作來解決:1)至少使用Xcode 6.4直到蘋果修復了該錯誤。

2)在情節提要中重建有問題的視圖。

一旦有機會與我的經理談這件事,我就會發布雷達鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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