Получение EXC_BAD_ACCESS во второй раз при открытии просмотра видео

Мы получили Vidyo SDK, отлично работающий с первого раза. Все отлично работает, во многом на примере кода SDK. Когда вызов выполнен и представление изменено, мы используем viewDidDisappear и устанавливаем:

[[NSNotificationCenter defaultCenter] removeObserver:self];
[vc disconnect];
[vc disable]; // releases the camera, mic, speaker
vc = nil;
[VCConnectorPkg uninitialize];

Как каждый раз, если мы начинаем новый вызов, мы получаем EXC_BAD_ACCESS при вызове представления. Использование Zombie в xcode дает мне следующую ошибку:

*** -[LmiVideoCapturerImplementationAVFoundation сохранить]: сообщение отправлено на освобожденный экземпляр 0x131f7f940

Такое ощущение, что мы что-то не так завершаем, что мы упускаем?


person user2052501    schedule 17.01.2018    source источник


Ответы (1)


Причина этого в том, что вы пытаетесь начать новый вызов после вызова [VCConnectorPkg uninitialize].

Вызовы API Vidyo.io должны выглядеть примерно так:

  • Вызовите [VCConnectorPkg vcInitialize] только один раз — в (void)viewDidLoad
  • Вызовите [VCConnectorPkg uninitialize] только один раз — в (void)appWillTerminate.
  • Вызовите [vc disabled] и vc = nil в случае, если вы покинете контроллер представления Vidyo.

И убедитесь, что вы вызвали vc = [VCConnector alloc] init:(void*)&videoView в случае, если вы ранее отключили и обнулили его.

person voltar    schedule 17.01.2018
comment
Хорошо, я удалил [деинициализацию VCConnectorPkg], просто используя (void)viewDidDisappear вызов: [vc disable] vc = nil Clean, переустановил несколько раз, но все равно получаю ту же ошибку. Как с тех пор, как [VCConnectorPkg vcInitialize] в (void)viewDidLoad вызывается каждый раз при загрузке представления, возможно, мне нужно создать оператор if, если он уже инициализирован? - person user2052501; 18.01.2018
comment
Да, вы не должны вызывать инициализацию дважды, просто проверьте, была ли она инициализирована или нет. То же самое относится к деинициализации. - person voltar; 19.01.2018