Facebook iOS SDK FBSession release message sent to deallocated object

менее 1 мин на чтение

Каким-то необычайно странным образом столкнулся со следующей проблемой:

  1. Запускаем приложение
  2. Запрашиваем права на publish_actions
  3. Даем отказ в правах
  4. Перезапускаем приложение
  5. Получаем crash на objc_release (двойной релиз)

Включив Enable Zombie Objects, локализовал проблему:

[FBSession release] message sent to deallocated instance

В проекте выключен ARC, код брал из документации FB. Покопавшись еще немного (и приняв во внимание, что, скорее всего, FBSession релизится при logout) нашел функцию, которая приводила к крашу:

void IOSFacebook::logout() {
[FBSession.activeSession closeAndClearTokenInformation];
[FBSession.activeSession close];
// [FBSession setActiveSession:nil]; Эта строчка вызывала краш

token.clear();

refreshAccount();
}

 

Не знаю что конкретно вызывало краш, обозначенная строчка ничего криминального не делала, но закомментив ее, все заработало