Блокировка сбоя при выпуске

У меня проблема, которую я не смог решить за 2 дня, и это происходит только в сборке релизов. У меня нет проблем, когда я запускаю ее в сборке отладки.

Но я думаю, что это из-за блока, который не выполняется. У меня есть отчет о сбоях:

3 libdispatch.dylib 0x375d1c34 _dispatch_Block_copy + 8 4 libdispatch.dylib 0x375dc4ca dispatch_async$VARIANT$up + 6 5 Koldkrigsspionen 0x00020ef2 -[NOAudioManager audioPlayerDidFinishPlaying:successfully:] (NOAudioManager.m:807) 

Метод audioPlayerDidFinishPlaying: успешно выглядит следующим образом:

 - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { if (musicPlayerCompletionBlock) dispatch_async(dispatch_get_main_queue(), musicPlayerCompletionBlock); } 

Блок устанавливается следующим образом:

 - (void)setMusicCompletionBlock:(void (^)(void))theBlock { musicPlayerCompletionBlock = theBlock; } 

Подобно этому в файле заголовка:

 void (^musicPlayerCompletionBlock) (void); 

One Solution collect form web for “Блокировка сбоя при выпуске”

Вам нужно скопировать блок в сеттер. Блоки запускаются в стеке и не перемещаются в кучу до тех пор, пока не будут скопированы.

Он «работает» в отладочных сборках, потому что оптимизатор не включен и, таким образом, компилятор не агрессивно повторно использует стек. Т.е. это работает по совпадению. Если вы хотите добавить вызов метода или два между созданием блоков и вызовом, это, вероятно, начнет сбой.

Я бы порекомендовал вам избавиться от пользовательских реализаций setter / getter для musicPlayerCompletionBlock и просто объявить свойство:

 typedef void(^MusicCompletionBlockType)(void); .... @property(copy) MusicCompletionBlockType musicCompletionBlock; 

Сгенерированный сеттер / геттер позаботится о копировании блока. Вы можете освободить его в dealloc , если не используете ARC.

  • Не удалось запустить приложение в симуляторе
  • У вас нет прав на использование этой службы. Ошибка загрузки приложения iTunes
  • Шифрование данных в iOS
  • Получение «Неподдерживаемое приложение FBSDKGraphRequest» при публикации фотографии с тегами
  • Как показать подробную информацию внутри NSLog в CoreData? предложите мне решение
  • Неверный / автогенерированный профиль подготовки при отправке в App Store
  • кодовый объект не подписан вообще с профилем Ad Hoc
  • Itunes Connect: не вижу сборки
  • Swift - ошибка, связанная со странным кодом
  • Эмуляция iOS с ионной эмуляцией тока с ошибкой: время ожидания загрузки устройства.
  • Динамическая структура iOS 8: библиотека не загружена
  • Interesting Posts

    В Swift, как импортировать цель с тире в ее имени?

    Как сделать Crash resistant ios apps

    Есть ли способ ускорить этот код ввода / вывода файла?

    Является ли iPhone Simulator эмулирующим пространство памяти на разных устройствах?

    Как использовать приобретенный товар с покупкой In-App на iOS?

    Работает ли window.print () во всех версиях Safari на iPad?

    Присутствует, пока идет презентация? Пытается отобразить новое представление после входа в facebook с помощью синтаксического анализа.

    Как изменить цвет верхней панели (Carrier / Clock и т. Д.) В iOS с помощью Forge?

    Перехват вызовов Ajax в UIWebview – iOS

    LAContext canEvaluatePolicy и Swift 2

    Несколько просмотров OpenGL (Cocos2D)

    Используйте различные сервисы GoogleService-Info.plist для разных схем сборки

    iOS: как выбрать, какой микрофон (встроенный / внешний) использовать?

    Можно ли получить токен oauth при запросе доступа к Facebook через систему учетных записей?

    GMSMapView коснулся только один раз

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.