2012년 10월 24일 수요일

빨간약, 파란약.



" 이번이 마지막 기회다.
선택하면 다시 되돌릴 수 없어.
파란약을 먹으면, 여기서 끝난다.
침대에서 깨어나 니가 믿고 싶은 것만 믿고 살게 되지.
빨간약을 먹으면,
이상한나라에 남아 이 토끼굴의 끝을 보게 될거다. "

모피어스를 만나게 해준 고마운 MB.
아직도 매트릭스에 갇힌 수많은 이들이 있다.
12월 19일.
매트릭스를 파괴할 큰 한 걸음을 내딛자.

2012년 10월 4일 목요일

iOS 6에서 Auto Rotate 문제

iOS 6에서 Auto Rotate 동작이 좀 바뀌어서 상속하고 오버라이딩하고 이런 것 좀 추가해줘야 기존 iOS 5에서 실행한 것과 같이 동작한다.
바뀐 개념을 내가 이해를 아직 못해서인가? 직관적이지 않고 애플스럽지 않다.
하위 버전에서 돌아가던 코드를 망가뜨릴 정도로 중요한 변화인건가?
그렇게 중요하면 잘 좀 정리해서 알리던가 아님 쉽게 만들어 놓던가 이게 뭐임;
자세한 내용은 추후 정리하자. 정리가 되긴 되려나;;

 이 내용에 관해 공부를 좀 해보았다.
조사해보니 WWDC 2012 Sessions에서 이것에 대해 설명을 하긴 했다. 제목은 "The Evolution of View Controllers on iOS"
하지만 사람들이 자막도 없는 저 비디오를 다 보는 것도 아니고 기존 어플 이상동작 일으키는 변화 치고는 개발자들한테 알리는데 약간 소홀히 한 면이 있지 않나 싶다.
 내용을 살펴보자.
 이런 큰 변화가 생긴 이유는 최초 UIViewController의 AutoRotate 관련 동작을 잘못 디자인한 데 있다. 기존에는 해당 ViewController의 AutoRotate 동작에 대한 결정을 각 ViewController가 했다. 그런데 가만 보니 이게 문제가 있는거다. Session Video에서 예를 든 것처럼 iPad의 PopOver 같은 ViewController가 스스로의 Orientation을 결정하는 것이 맞는 것인가 하는 생각이 든 것이다. 여기에 대해 Apple이 내린 결론이 현재 윈도우의 최상위 RootViewController나 현재 전체화면으로 보여지고 있는 ViewController가 스스로 결정하는 것이 맞다는 것이다. 더이상 하위 ViewController가 이 결정에 참여하지 않는다. 그래서 기존에 각 ViewController에다 구현해 놓은 메소드가 불려지지 않기 때문에 원하는 방향을 지정해 주려면 어떤 식으로든 코드 변경이 불가피하다. 기존에 방향에 관한 조작을 하려면 반드시 오버라이딩해야 했던 메소드 shouldAutorotateToInterfaceOrientation: 는 무려 deprecated.

 구체적인 코드나 방법은 직접 해보고 찜쪄먹은 뒤에 포스팅해야 겠다.
 처음에는 이런 무례한 변경이 애플스럽지 않다고 생각했는데 다시 생각해 보니 자신들의 기존 생각이 잘못되었다는 것을 알고 나서는 이를 바로 잡기 위해 기존 동작을 틀어버리는 과감(?)한 행보가 더 애플스러운 것 아닌가 하는 생각이 든다. 너무 애플빠스런 발언인가?ㅋ 물론 코드 고쳐야 하는 나로서는 좀 짜증나지만 길게 봐야 하지 않겠는가? 스스로의 판단이 잘못 된 것을 깨달았을 때는 과감히 인정하는것이야말로 대인배잖은가?

 이런 저런 과정을 거치고 나니 WWDC 2012 Sessions를 마저 다 봐야겠다는 생각이 든다.
역시 기본이 없이 막 만든 코드는 모래성이다. 빨리 대충 결과물 나오면 짝짝짝 하는 사람들이 생각난다. 그러지말자.