+ animateWithDuration: анимации: завершение: вылетает под симулятором - PullRequest
5 голосов
/ 19 апреля 2011

Обновление

У меня тоже такая же проблема, звонки на +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 при вызове строки выше. Спасибо за помощь ....

Ответы [ 2 ]

0 голосов
/ 12 октября 2011

Это не совсем ответ, хотя он описывает, что вызвало проблему, и что может ее устранить - у меня была точно такая же проблема, внезапно любой UIView animateWithDuration зависал, даже если не было передано ни одного объекта идаже без блока по завершении.Это началось, когда я добавил библиотеки Urban Airship и связанные с ними среды (libUAirship-1.1.0.a, FNetwork.framework, MobileCoreServices.framework, Security.framework, SystemConfiguration.framework, libz.dylib, libsqlite3.dylib, CoreTelephony.framework, StoreKit.framework) и быстро остановился, когда я снова избавился от них.Я знаю, что это не имеет никакого отношения к sqlite lib и среде storeKit, потому что я использую их сейчас, но я никогда не отслеживал это должным образом.Буду благодарен и за более подробный ответ!

0 голосов
/ 12 мая 2011

Я бы хотел увидеть больше кода, чтобы быть уверенным, но единственный объект, к которому вы обращаетесь, это mapTableOverlay, так что, похоже, проблема в этом объекте Посмотрите на состояние, когда эта анимация называется. Возможно ли, что mapTableOverlay выпускается без iVar, установленного на ноль (возможно, в viewDidUnload)?

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

  1. Код с mapTableOverlay жизненным циклом

  2. Код, показывающий контекст анимации

  3. Трассировка стека от сбоя

...