2016-08-21 68 views
8

最近我開始加入我的應用程序IOS 10功能,同時我遇到了一個奇怪的錯誤:EXC_BAD_ACCESS了Facebook SDK登錄Xcode中8的測試版

當通過瀏覽器的Facebook SDK儘快驗證,我點擊了Facebook本身的確認按鈕嵌入式瀏覽器,應用程序崩潰。

enter image description here 不幸的是,這個bug並沒有提供信息,控制檯並沒有告訴我任何有關它的信息,也沒有調用堆棧來查看發生此異常的位置。

兩個點展示這種錯誤的原因:如果登錄通過系統帳戶,但 1.不會出現此錯誤,只有當它在瀏覽器中,你可以在接下來的照片上看到: enter image description here

(只要我點擊確定發生異常)

  1. 當我通過Xcode 7.x運行我的應用程序時,錯誤不會發生。所以這可能與facebook SDK與新編譯器的集成或類似的東西有關。

希望有人有這樣的答案,或者我可以怎樣調試這種無信息錯誤的想法。 在此先感謝, Liran。

+0

麗然你好,請考慮評價答案我在下面留下接受的答案。它更直接地幫助人們解決這個問題。在這裏也可以看到:https://www.facebook.com/groups/fbdevelopers/permalink/1165603546816491/ – adimitri

回答

0

我剛碰到類似的東西,但不幸的是我沒有時間去挖掘問題。但我發現這個網站,這也解釋了相當不錯它是如何工作的,以及如何對其進行調試:What Is EXC_BAD_ACCESS and How to Debug It

所以,在這裏就是爲什麼這個錯誤發生:

總之,當你遇到EXC_BAD_ACCESS,這意味着您嘗試將消息發送到無法執行該消息的內存塊。

但是,在某些情況下,EXC_BAD_ACCESS是由損壞的指針引起的。只要你的應用程序試圖解引用損壞的指針,內核就會拋出一個異常。

一個在這篇文章中給出的解決方案是使用殭屍對象

點擊左上方的主動方案,並選擇編輯計劃。

選擇左側的Run(運行)並打開頂部的Diagnostics(診斷)選項卡。要啓用殭屍對象,請勾選標記爲啓用殭屍對象的複選框。 如果您現在遇到EXC_BAD_ACCESS,Xcode控制檯中的輸出會讓您更好地瞭解從何處開始搜索。

它應該給你更多的日誌信息,所以你可以有一個什麼樣的問題根源的想法。順便說一句,它不適合我。

另一種解決方案是使用分析 Xcode工具檢查代碼中可能存在問題的區域。 按Shift-Cmd-B即可使用它,或Product -> Analyze 它應顯示您必須在Xcode左側面板的Issue Navigator中檢查的可能問題。點擊問題顯示Xcode中可疑的代碼塊,但這可能最終不會成爲問題的一部分。

欲瞭解更多信息,請查看上面的鏈接,我只是總結了文章的內容。

+0

感謝兄弟我也發現,但我發現問題只在Beta 6中,所以它必須是一個問題編譯FB SDK,所以它不會幫助調試它。我會等待下一個Xcode版本,我認爲這是一個更好的解決方案:) –

+1

不客氣,我認爲你是對的,這也是我決定也要做的,等待並希望穩定版本將解決這個問題。但我想你的意思是beta 8,不是嗎? 祝你好運!) – n3wbie

4

我也遇到過這個問題。看來的的UIApplication委託方法之一是不贊成使用的iOS 9和iOS的10

optional func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool 

我用下面的方法取代它大概刪除:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
     return FBSDKApplicationDelegate.sharedInstance().application(app, 
                    open: url, 
                    sourceApplication: options[.sourceApplication] as! String, 
                    annotation: options[.annotation]) 
} 
+0

非常感謝!有趣的是,如果'AppDelegate'實現了舊的'open url'方法,那麼應用程序會直接崩潰。刪除它並執行新的解決了我的問題。 –

+1

謝謝。這應該是被接受的答案。 – yesthisisjoe