오늘의 삽질 : NSNotificationCenter
.......세상에 믿을 코드 하나 없다더니ㅠㅠㅠㅠ 내 실수인것을 누굴 탓하겠느냐만 부주의로 인해 몇날 며칠을 (미루다가 이제서야 삽질해서 알아낸거지만) 끙끙 앓던 문제..
잊지말고 글을써두자.
Unbalanced calls to begin/end appearance transitions for <ViewController>
뭔가 viewController를 불러오는 동안? 혹은 부를때 문제가 생겼다. 근데 뭐가 문제인지 도저히 모르겠다.. 구글신에게 물어보면서 하나씩 체크!
의심 1. 애니메이션 문제인가??
애니메이션이 이루어 지고 있을때 강제로 transfer를 하게 되면 이러한 문제가 일어날수 있다. 그러므로 Animate를 NO로 하여 넘어가던지 @selector를 이용하여 delay를 준다
결과 1 : 실패.
우선 내 경우에서는 애니메이션이 없엇음. 그리고 animate도 NO해보고 delay를 줘 봤지만 결과는 그대로 ㅠ_ㅠ
의심 2. init 대신 initWithNibName:bundle:을 사용해라
결과 2: ㄴㄴ..실패
여기까지 하다가 생각해보니.. 내 경우는 NSNotification을 이용하여 notification이 post 하면 메소드를 부르고 있었다. 그래서 break를 걸어보니...... 두...두번 부르고 있었다 orz..
[self.navigationController pushViewController:VC animated:YES]; 를 연속 두번 부르게 되어 위와 같은 문제가 발생한 것이다.
그렇다면 왜 두번 부르는 걸까.
의심 3. post를 두번하나?
결과 3: ㄴㄴ...
그래도 아니라면 .... addObserver를 두번했나 하고 봤더니 viewWillAppear에서 이 화면에 들어올때마다!!마다!! addObserver를 하고 있엇음..
같은 name일때는 한번만 옵져버가 등록될줄알았는데... 같은이름 같은 selector라도 아주 정직하게 다 등록해주고있엇다..
결과.
NSNotification을 사용할때는 removeObserver 잊지말고 addObserver는 시키는데로 계속 더해주니 조심히 사용하자. 그리고 위 에러는 view transfer에서 생기므로 넘어갈때 (pushview...)와 viewWillApper, viewDidLoad 부분을 잘 살펴보자.
(쓰고 나니 바보 인증..ㅠ_ㅠ)










