#cocoa-touch #ios4 #uiview #core-animation
#cocoa-touch #ios4 #пользовательский просмотр #ядро-анимация
Вопрос:
Обновить
Я тоже сталкиваюсь с той же проблемой, вызовы animateWithDuration:animations:completion:
отлично работают на устройстве, но сбой в симуляторе.
[UIView animateWithDuration:0.5
animations:^{
NSLog(@"Begin");
}
completion:^(BOOL finished){
NSLog(@"End");
}];
Как вы можете видеть, я не обращаюсь ни к каким другим объектам, и он все равно завершится с EXC_BAD_ACCESS.
Обновление 2
Кажется, что сбой происходит только в том случае, если вы передаете block
при completion:
передаче NULL, работает нормально.
[UIView animateWithDuration:0.5
animations:^{
NSLog(@"Begin");
}
completion:NULL];
Оригинальный вопрос
Я использовал телефон для разработки в основном потому, что использовал библиотеку, которая не была скомпилирована для Intel, но теперь переключилась обратно на симулятор, чтобы ускорить процесс.
Я получаю постоянные сбои при использовании UIView animateWithDuration, и мне пришлось временно закомментировать их в моем коде. Они отлично работают на телефоне. Я использую последнюю версию SDK 4.3.1 (почти) и выполняю компиляцию для версии 4.0 и далее.
Есть идеи, почему это сбой?
[UIView animateWithDuration:0.5 animations:^ {
mapTableOverlay.alpha = 0.8;} completion:^(BOOL finished){}];
Получение EXC_BAD_ACCESS при вызове строки выше. Спасибо за помощь….
Комментарии:
1. Я вижу, что вы также уже включили блок завершения.. но вместо того, чтобы иметь его пустым, не могли бы вы поместить только для тестирования инструкцию NSLog и посмотреть, произойдет ли сбой?
2. вы нашли решение для этого? Я сталкиваюсь с точно такой же проблемой, но сначала не понимал, что это было только в симуляторе.
3. Я сталкиваюсь с той же проблемой: / Есть новая идея по этому поводу?
![]()
Ответ №1:
Это не совсем ответ, хотя в нем описывается, что вызвало проблему, и что может ее облегчить — у меня была точно такая же проблема, внезапно любой UIView animateWithDuration зависал, даже если никакие объекты не были переданы и даже без блока по завершении. Это началось, когда я добавил библиотеки Urban Airship и связанные с ними фреймворки (libUAirship-1.1.0.a, FNetwork.framework, MobileCoreServices.framework, Security.framework, SystemConfiguration.фреймворк, libz.dylib, libsqlite3.dylib, CoreTelephony.framework, StoreKit.framework) и быстро прекратился, когда я снова от них избавился. Я знаю, что это не имеет ничего общего с библиотекой sqlite и платформой StoreKit, потому что я использую их сейчас, но я никогда не отслеживал это должным образом. Я был бы благодарен и за более подробный ответ!
Комментарии:
1. Похоже, это связано с библиотекой Urban Airship. С тех пор я удалил эту библиотеку, поскольку она мне не нужна в текущей версии. Проблема устранена.
Ответ №2:
Мне нужно было бы увидеть больше кода, чтобы быть уверенным, но единственный объект, к которому вы обращаетесь, mapTableOverlay
так что, похоже, проблема должна быть с этим объектом. Посмотрите на состояние при вызове этой анимации. Возможно ли, что mapTableOverlay
выпускается без значения iVar, равного нулю (возможно, в viewDidUnload
)?
Было бы полезно добавить следующее к вашему вопросу:
-
Код, описывающий
mapTableOverlay
жизненный цикл -
Код, показывающий контекст анимации
-
Трассировка стека после сбоя