簡體   English   中英

iOS 11.3和Xcode 9.3導致Obj-C應用啟動失敗

[英]iOS 11.3 AND Xcode 9.3 causing Obj-C app launch failures

所以這很奇怪...我們有一個用Obj-C編寫的應用程序,在任何人更新到iOS 11.3之前,它都運行良好。 11.3更新破壞了它……但是,使用Xcode 9.3和新的編譯器,我們在所有設備上都遇到相同的錯誤。 蘋果似乎在SDK中發生了問題。

同樣,如果他們實際上在SDK中破壞了某些內容,那么所有人似乎都將遇到此問題。 因此,我請您,SO的大腦來幫助我解決這個問題!

注意:請非常清楚:這是一個用Obj-C(而不是Swift)編寫的較舊的應用程序,僅維護了一段時間。

因此,令人討厭的代碼塊非常簡單:

- (UINavigationController *)controllerForCategories: (NSArray *)categories titled:(NSString *)title
{
    DocumentViewController *dc = [[DocumentViewController alloc]initWithCategories:categories titled:title];
    UINavigationController *nc = [[UINavigationController alloc]initWithRootViewController:dc];
    [self addChildViewController:nc];
    // ERROR HAPPENS ON THIS ^^ LINE
    [nc didMoveToParentViewController:self];
    [self.contentPanel addSubview:nc.view];
    nc.view.frame = self.contentPanel.bounds;
    return nc;
}

現在,根據Apple文檔,應該沒問題。 如果我們重寫了addChildViewController(),那么可能會有問題,但是沒有,我們只是在調用方法。 名為“ nc”的參數是擴展UIViewController的SDK類,因此它是所討論方法的有效參數。 但是,在11.3(或帶有Xcode 9.3的所有iOS版本上,每次啟動時,我們都會在任何設備上收到此錯誤:

2018-04-25 14:42:18.792216-0700 Steri-Vac GS [1090:855706]-[MasterNavigationViewController _viewControllerSubtreeDidGainViewController:]:無法識別的選擇器已發送到實例0x101210100 2018-04-25 14:42:18.792662-0700 Steri-Vac GS [1090:855706 *終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因是: ' - [MasterNavigationViewController _viewControllerSubtreeDidGainViewController:]:無法識別的選擇發送到實例0x101210100' *第一擲調用堆棧:(0x186c4b164 0x185e94528 0x186c58628 0x1905c6188 0x186c50b10 0x186b35ccc 0x19029a964 0x19029d2c0 0x100a4941c 0x100a48bec 0x190205a00 0x1902055d8 0x19020c1a4 0x190209404 0x1902782e8 0x100a77a24 0x1902742c4 0x190465bc4 0x19046aa14 0x1907062a8 0x1909de100 0x190705f0c 0x19070676c 0x190e8b7c0 0x190e8b664 0x190bf92cc 0x190d923cc 0x190bf917c 0x1909dd760 0x190469158 0x19087edbc 0x18930e1f0 0x189316af8 0x100bb928c 0x100bc59e4 0x1893427f8 0x18934249c 0x189342a38 0x186bf377c 0x186bf36fc 0x186bf2f84 0x186bf0b5c 0x186b1 0c58 0x1889bcf84 0x1902695c4 0x100a51994 0x18663056c)libc ++ abi.dylib:以NSException類型的未捕獲異常終止

我已經向Apple提交了一個bug,並提交了代碼來支持它,但是我想我會在這里與大腦信任進行檢查,看看在此期間是否有人可以調查。 目前,我們的應用程序已無用,並且我40%的現場服務技術人員已更新至11.3,因此對於我們來說,這已成為一個關鍵問題。

預先感謝大家。

蘋果回應了我的錯誤!

事實證明,我們的類正在擴展UIViewController並實現一個名為navigationController的屬性,它是UIViewController的另一個實例,而同時UIViewController具有一個名為navigationController ...的屬性是UINavigationController的一個實例。 訣竅是簡單地將我們的navigationController重命名為navController。 沖突解決了。

真正的問題是,為什么它只有在更新到Xcode 9.3之后才停止工作,並且直到我們的用戶更新到iOS 11.3時才真正中斷應用程序。 在11.2下,原始應用程序運行良好。 並且在更新到Xcode 9.3之后,編譯應用程序將無法在任何版本的iOS上運行。

很奇怪!

暫無
暫無

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

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