Анимация UIView <Не получено> Сбой - PullRequest
1 голос
/ 18 ноября 2011

Моя программа перемещает объект вдоль CGPoints.Когда создается новое количество CGPoints, оно просто отлично перемещается к новым точкам.После примерно 5-10 изменений объекта мое приложение вылетает, и XCode получает пляжный мяч.

Вот анимация:

-(void)animateDot {
    double x1 = dotMotion.center.x;
    double y1 = dotMotion.center.y;
    double x2 = (*doodlePoints)[dotLocation].x;
    double y2 = (*doodlePoints)[dotLocation].y;
    dist = sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1))); 
    if (dist < 0.01){
        dist = 1;
    }
    delay = dist/100.0;
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDidStopSelector:@selector(animateDot)];
    [UIView setAnimationDuration:delay];
    dotMotion.center = (*doodlePoints)[dotLocation];
    if (dotLocation == doodlePoints->size()-1){
        dotMotion.bounds = CGRectMake(0, 0, 16, 16);
    } else {
        dotMotion.bounds = CGRectMake(0, 0, 8, 8);
    }
    [UIView commitAnimations];
    dotLocation = (dotLocation +1)%doodlePoints->size();
    if (dotLocation == 0 && stopAnimation != YES){
        dotLocation = (dotLocation +1)%doodlePoints->size();
    }
}

Кнопка, которую вы нажимаете для нового объекта, имеет следующее: (и я вызываю isAnimating == TRUE один раз и никогда не называю это false, поэтому он не должен снова делать animationDot).

    if (isAnimating == TRUE) {
} else {
    [doodlePad animateDot];
}

Мои ошибки включают в себя:

Warning: Unable to reach Previous state:

Такжестек показывает очень большое количество (пару тысяч)

# <Not Fetched> //# = 1 to X amount

, а мой стек начинается с:

0 szone_malloc_should_clear
1 malloc_zone_malloc
2 _CFRuntimeCreateInstance
3 CFBasicHashCreate
4 __CFDictionaryCreateGeneric
5 CFDictionaryCreate
6 -[__NSPlaceholderDictionary int.. //I can't see the rest
7 +[NSDictionary dictionaryWithObj... //as above

, затем с 8 по 100 имеет

# -[DoodlePad animateDot]
# -[UIViewAnimationState sendDel... //can't see the rest
# -[UIViewAnimationState popAni... //above

после этого все это # <Not Fetched>

У меня такое ощущение, что мне нужен способ освобождения памяти или удаления анимации до создания следующих CGPoints.

Можете ли вы объяснить, что это значит?Я не смог найти никого с такой ошибкой в ​​Google.Как можно исправить этот сбой?

1 Ответ

1 голос
/ 18 ноября 2011

Ваш селектор имеет неправильную форму.Следует принять три параметра :::.Другое дело, что вы делаете тяжелые вещи с тяжелыми объектами (объекты пользовательского интерфейса тяжелые).Похоже, что ваш delay может принимать значения, такие как 0.01 ( и меньше !!! ).(Это не задержка , а длительность в вашем случае.) Такая анимация не имеет смысла, так как fps на iPhone 60.

(Выпытается заменить игровой цикл анимацией? :))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...