2011.10.15 01:03
푸허얼......... 막혔던 숨이 팍~ 트이는 기분이로군요. ㅠㅠ 이제.. iOS5 도 일반에 공개되었고, 더불어 개발툴인 Xcode 4.2 역시 정식으로 릴리즈되었습니다. 그 얘기인 즉슨!.. NDA이고 뭐구.. 이젠 막 떠들고 싶은 걸 떠들어도 된다는 얘기겠죠! 엉엉.. ㅠㅠ
4.2 정식버전으로 넘어오면서, 징글징글했던 버그와의 전쟁도 끝났고.... 할까말까.. 할까말까... 덜덜 떨면서 몇발자욱 떨어져서 지켜만 보던 바로 그 기능 두가지도 이제 마음 껏 활용할 수 있게 되었죠!
먼저!.. ARC!.. Automatic Reference Counting의 줄임말인 ARC는 iOS컴파일에 애플의 LLVM 컴파일러 3.0을 사용하게되면서 얻어진 환상적인 녀석인데요.
말그대로, 더 이상 iOS개발할 때도 객체의 참조를 신경쓰지 않아도 되게 되었습니다. OS X용 개발할 때는 꽤 오래전부터 이게 가능했는데.. ㅠㅠ 카이젼 경험해 본 적이 없었죠. Xcode 2.0때가 마지막으로 맥용 앱을 작성해본 때였던 지라... retain, release, autorelease에 무척 익숙했고...... 오히려 이 3가지 없이 Objective C를 쓴다는 것 자체가 무척 어색한게 사실이었습니다. 어떻게보면 iOS용 앱을 만드는게 더 편했다고나 할까요?...
근데 막상... 덜덜거리면서.. 설마 이래도 되나싶을 정도로.. ㅠㅠ 해보니까 큰일입니다. ㅠㅠ 손가락과 머리는 retain과 release... autorelease를 썼다가 지웠다가.. 썼다가 지웠다가하면서....(새 Xcode로 ARC를 켜고 작업하면 너 자꾸 왜이러냐며 그러지 말라고 합니다. ㅠㅠb) 마음은 그래도 불안불안.
하루종일 몇가지 샘플을 만들고 지지고 볶은 뒤에야......... 적응할 수 있었죠. 다만.. 어제는 또 예전 프로젝트를 열어서 작업하다보니.. ㅠㅠ 다시 예전 습관으로 금새 돌아가더군요. 당분간은 두가지 습관이 묘하게 얽히면서 공존할 듯 합니다.
iOS에서 ARC가 안되었던 이유는 오로지 '속도'와 '메모리 효율성'이라는 것 때문이었는데요. 애플의 새 LLVM 컴파일러는 정말 대단합니다. 자세한 건 애플이 내놓은 ARC와 비ARC 비교차트를 찾아보시면!.. ㅠㅠ 엉엉..
그동안 코딩하면서 전체의 1/3 정도 차지했던 메모리 관리에 대한 압박에서 훨훨 벗어날 수 있게 되었습니다. 어우~씐난닷! 마돈나돈나~
여하튼간에.. ㅠㅠ 내년 1월까지 마무리지어야하는 iPad용 앱프로젝트를 하나 시작했는데요... 어차피 새로 만드는 앱이라 과감하게작부터 ARC를!.. 그리고 지켜만봤던 두가지 중 다른 하나인 '스토리보드'를 사용하기 시작했습니다.
스토리보드는, Interface Builder를 통해 Nib파일을 만들어서 인터페이스만 쏘옥~ 만들 수 있던 것을........... 좀 더 거시적 관점에서 보고 인터페이스 구성요소를 거대한 지도위에 순서도마냥....... 그림을 그려가며 슥슥~ 슥슥~ UI를 다 만드는 겁니다. 음.. 이렇게 설명하니깐 좀 어색한데요. 그림으로 대충 보면..
이겁니다! 이거!... 네.. 농담같지만.. 사실이에요. ㅠㅠ 엉엉......... 뷰컨트롤러 별로 하나의 Nib 파일을 만들고, 그걸 불러다가 로딩하고 또 날리고...... awakeFromNib이니 viewDidLoad니.... iOS개발자라면 기계적으로 팍팍팍 두들겨대던 바로 그것들.... 한마디로 '시간낭비'하던 또 다른 1/3가 사라져버렸습니다. 엉엉.. ㅠㅠ 스토리보드로 모든 Nib들을 전부 대신하는 형태죠. 당연히 이전의 코딩방식으로 스토리보드를 쓸 순 없고요. ㅠㅠ Segue 라고 불리우는 새로운 방법이 도입되었죠. 네.. 세그웨이의 그 세그입니다. ㅠㅠ
하루 정도 코딩하면서.. 대체 왜 베타기간동안 그토록 많은 ViewController 관련 에러가 많았었는지.. 깨닫게 되었죠. 그리고 왜 Modal View Controller 를 Presenting 할 때의 메시지가 iOS5부터 새롭게 바뀌게되었는지... 정말이지 그 배경을 알게되고나니.. 감탄 또 감탄의 연속.. ㅠㅠ 엉엉.. 이건 스토리보드를 직접 해봐야 알죠. 엉엉.. ㅠㅠ 자꾸 눈물이.. ㅠㅠ 흑흑..
기존에 들였던 코딩 습관을 반 이상 버려야하지만.. 그 대신, 이번 적응기간만 끝나면 예전의 코딩 스타일로는 도저히 못돌아갈 것 같습니다. 다만 이 놀라운 혜택을 누리기 위해선 기존의 지식도 역시 필요하다는 점이... 아이러니합니다만.. 신규 iOS 개발자가 스토리보드만 잘 쓰면 이전의 코드는 아예 이해도 못할 상황이 벌어질 것 같기도 하고요. 어떤 부분에 있어선 아예 앱 개발과정 전반에 걸쳐서 이해하는 방식이 상당히 차이가 날 수 있기 때문에… iOS 개발관련 서적 쓰시는 분들은 큰일이군요. ㅠㅠ ARC와 스토리보드 2가지만으로도 책을 어떻게 구성해야할지 엄청난 고민들을 하실 듯.... 카이져의 첫 스토리보드 프로젝트는 '당황스러움'으로 표현 할 수 있겠네요. 엉엉.. 지금은 괜찮아요. 그저 놀랍고 감사하기만 할 뿐.. ㅠㅠb ARC+스토리보드=무적 공식이 성립합니다.
새롭게 iOS개발에 뛰어든다면.. 스토리보드를 무조건 쓰기를 권합니다. 기존의 코드들이 한 번에 사라지지는 않겠지만, 좀 길게 보면… 스토리보드를 사용하는 iOS 코딩만이 남을 수 밖에 없을 것 같습니다. iOS6정도만 가도.. 뭐.. Nib로딩하고, ModalView 내보내고 그러면 되게 이상한 기분이 들 것 같아요.
기존방식대로 작업하던 개발자들 역시, 빠른 시일내에 스토리보드로.. 새 프로젝트라면 반드시 도입하는 편이 좋을 듯 합니다. 기존의 프로젝트 이사가 복잡하다면 새롭게 추가되는 부분만 스토리보드를 채용할 수도 있지요, 그 반대의 경우도 가능하긴 합니다.
테이블 뷰 작업할 때 '헉!' 하고, 여기에 데이타소스에다가 테이블뷰셀 리턴하는데 ARC로 autorelease도 없이 만들어서 리턴하니…. 뷰컨트롤러 서너개를 만들어서 왔다갔다하는데… 대체 뭘 작성한 코드가 거의 없네요. 심지어 실제로 돌아가는데도 불구하고.. 코드를 세세히 살피면서.. 대체 내가 뭘 빼먹은건 아닌가... 걱정아닌 걱정으로 한 참 시간을 보내기까지 했습니다. ㅠㅠ
세상이 점점 좋아지네요. ㅠㅠb 2003년인가?... WWDC에서 Codeless Webbrowser 만드는 걸 즉석에서 시연할 때 느꼈던 기분과 비슷합니다.
플레이스테이션> 10년 후 Xcode에선 또 얼마나 더 쉬워질래나요? ㅠㅠ Mac과 iOS이외에 플랫폼에서 프로그래밍이라는 건... 어릴 때 Apple II와 MSX에서 Basic 조물거린 것 밖에 없어서.. ㅠㅠ 다른 플랫폼에서 스토리보드 같은 녀석이 있는지는 모르겠습니다.
ARC는 아직도 호불호가 갈리고 있는 것 같아요.
하위 호환성(iOS4-, 32bit 등) 문제도 없지 않고, 기존 개발자들에게는 객체 구조를 만들 때 머리가 조금 더 아파진 것 같고,
메모리를 많이 먹는 것 같을 때 디버깅 하기도 어려울 것 같구요.
결정적으로 수많은 라이브러리, 심지어 애플 프레임워크(특히 맥, 레거시) 쪽도 ARC를 영 좋지 않게 지원하기도 하구요 ㅠㅠ..
Segue도 결국 하위 호환성이 ㅠㅠ...