티스토리 뷰
iOS에서 Unbalanced calls to begin/end appearance transitions for ~~ 해결법
coart 2012. 12. 18. 13:57iOS를 개발하는데 Unbalanced calls to begin/end appearance transitions for <FirstViewController: 0x2a2c00>와 같은 오류가 뜨는 이유는 UI를 관리하는 transition이 끝나지 않은 상태에서 다음 transition을 요청했을 때 발생한다.
예를 들어 화면을 바꾸는데 에니메이션을 3초에 걸쳐서 넣었는데, 3초가 지나가기 전에 다른 화면으로 바꾸도록 요청하는 경우에 이런 에러가 뜨게 된다.
이렇게 원인을 바로 알 수 있는 경우가 있는 반면, 프로그래스(Progress)바와 같이 상태를 주기적으로 업데이트 하는데 그 상태의 변경이 너무 빨라서 처리 할 수 없는 경우도 있다.
이러한 에러를 해결하는 방법은 간단한다.
1. 시간이 오래걸리는 에니메이션을 사용하지 않는다. 또는 에니메이션 자체를 사용하지 않는다.
- 이건 매우 당연한 이야기. 에니메이션을 사용하지 않는다면 이러한 오류가 발생할 확률이 많이 줄어든다.
2. 화면 전환 또는 컨트롤하는데 어느정도의 시간을 둔다.
- 이건 화면 전환이 매우 빠르게 일어나는경우 사용하면 좋다. 화면 전환을 제어하는 방법에는 여러가지가 있다.
- busy wait 방식으로 특정 조건을 만족하게 구현하거나. call back을 이용할 수 있다.
- 내가 주로 쓰는 방법은 performSelector를 쓰는 것이다. performSelector는 특정 함수를 호출 하는데 임의의 시간동안 delay를 줄수 있다. 아래는 performSelector를 쓰는 예제이다.
[self performSelector:@selector(functionA) withObject:nil afterDelay:0.50];
해석하여 보면 현재 class에 있는 functionA를 0.5초 뒤에 호출하라는 뜻이다.
- Total
- Today
- Yesterday