2016-08-21 6 views
8

недавно я начал добавлять свои приложения IOS 10 функций в то время как я обнаружил странную ошибку:EXC_BAD_ACCESS в Facebook SDK для входа Xcode 8 бета

При проверке подлинности с facebook SDK через браузер, как только я нажимаю кнопку подтверждения в фейсбуке сам в встроенный браузер, приложение аварийно завершает работу.

enter image description here К сожалению, эта ошибка не является информативной, консоль ничего не говорит мне об этом, и нет стека вызовов, чтобы увидеть, где произошло это исключение.

Две точки для демонстрации этой ошибки причины: 1. Эта ошибка не возникает, если Логин осуществляется через систему учет, но только тогда, когда в браузере, как вы можете видеть на следующей фотографии: enter image description here

(Как только я коснуюсь OK, возникает исключение)

  1. Когда я запускаю приложение через Xcode 7.x, ошибка не возникает. Так что это, вероятно, связано с интеграцией facebook SDK с новым компилятором или что-то в этом роде.

Надеюсь, у кого-то есть ответ на это, или, может быть, идея о том, как я могу отлаживать этот вид информативной ошибки. Заранее спасибо, Liran.

+0

Привет Liran, пожалуйста, рассмотреть вопрос оценки ответа I слева ниже для принятого ответа. Это больше помогает людям решить эту проблему. Смотрите также: 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 вызван коррумпированным указателем. Всякий раз, когда ваше приложение пытается разыменовать коррумпированный указатель, ядро ​​генерирует исключение.

Одним из решений, приведенных в этой статье, является использование Zombie объектов:

Нажмите на активную схему в верхнем левом углу и выберите Редактировать Схема.

Выберите «Выполнить» слева и откройте вкладку «Диагностика» вверху. Чтобы включить объекты зомби, отметьте флажок «Включить объекты зомби». Если вы сейчас работаете в EXC_BAD_ACCESS, вывод в консоли Xcode даст вам гораздо лучшее представление о том, где начать поиск.

Он должен предоставить вам больше информации в журналах, чтобы вы могли понять, в чем корень проблемы. Кстати, это не сработало для меня.

Другое решение - проверить возможные области проблем в вашем коде с помощью анализатора Xcode. Нажмите Shift-Cmd-B, чтобы использовать его, или Product -> Analyze Он должен отображать возможные проблемы, которые вы должны проверить в Навигаторе проблем на левой панели Xcode. Нажмите на проблему, чтобы отобразить блок кода, который является подозрительным для Xcode, но который, возможно, вообще не может быть частью проблемы.

Для получения дополнительной информации, перейдите по ссылке выше, я просто подвел итоги статьи.

+0

Спасибо брату, я тоже нашел это, но я обнаружил, что проблема в Бета-6 ТОЛЬКО, поэтому это должна быть проблема компиляция FB SDK, поэтому это не поможет отладить его. Я просто подожду следующей версии Xcode, я думаю, что это лучшее решение здесь :) –

+1

Добро пожаловать, и я думаю, что вы правы, вот что я решил сделать, подождать и надеяться, что стабильная версия решит эту проблему. Но я думаю, вы имеете в виду бета-8, не так ли? Удачи вам в этом;) – n3wbie

4

Я тоже сталкивался с этой проблемой. Кажется, один из методов UIApplication делегата осуждались в прошивке 9 и предположительно удалена прошивке 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

 Смежные вопросы

  • Нет связанных вопросов^_^