본문 바로가기

짧게 쓰기/칼럼

아이폰 개발의 어려움 두가지

저는 복사/붙여넣기 웹노가다가 너무나도 싫었고 순수 어플리케이션 개발을 하고 싶었습니다. 아이폰 개발을 한다면 순수 어플리케이션 개발을 할것 같았습니다. 이런 어쩌면 단순한 생각으로 아이폰 개발을 시작했습니다.

실제로 해보니 내가 원했던 어플리케이션 개발을 할수 있어서 재미있었습니다. 그러나 역시 완벽한 이상적인 세계는 없듯이 아이폰 개발을 하면서 이런점이 불편하다~라는 것을 느꼈습니다.


하나는 아이폰 API 기능을 한번 알고나면 편하고 강력한데 그 기능을 처음 알기 까지 오래 걸린다는 것입니다. 예를 들어 자료구조 컬렉션 객체를 다루는 문법은 어느 언어나 비슷해서 예상하기 쉽고 알기 쉽습니다. addObject, objectAtIndex 같은 비슷한 문법으로 컬렉션 객체를 다룰 수 있죠. 이렇게 모든 언어가 비슷한 보편적인 API는 쉽게 알 수 있습니다만,

아이폰만의 독특한 API를 알아야 할 경우가 있습니다. 이경우 독특한 아이폰 API를 알기 까지 인터넷 검색을 하다보면 반나절에서 하루는 걸릴수가 있다는 것이죠.


예를 들면 xib(UI 그리는 파일)에 백그라운드 이미지를 삽입해야 하는데 아무리해도 적용이 안되는 겁니다. 알고보니 백그라운드 view 색상을 '투명'으로 해야 백그라운드 이미지가 먹었습니다. 이거 알기까지 반나절 꼬박 고생하곤 했습니다. 왜냐면 아이폰 개발 잘하는 지인도 없었고, 인터넷에서도 한방에 찾기가 어려우니깐요. 그래도 이 경우는 일단 고생해서 알면 편하고 강력하니깐 큰 어려운점은 아닙니다만..



하나는 이거 때문에 일하는 동안 많이 괴로웠는데요. 이 문제와 비교하면 위의 경우는 '애교' 수준입니다. 애플에서 상식적으로 제공할만한 API도 막는 경우가 있다는 것입니다. 예를 들어 JSP 같은 경우 Request 객체도 제공하고 당연히 Response 객체도 제공합니다. 아이폰의 웹브라우저 컴포넌트인 UIWebView에서도 Request객체를 제공하니 당연히 Response 객체를 제공할 것이라고 생각했습니다. 그러나.. Response 객체 제공안합니다. 제공 안하면 어떻게 해야 하느냐..다른 방법을 찾아야 합니다. 다른 방법을 찾기 까지 오래걸립니다.

이 경우 NSURLConnection을 delegate 걸면 Response 객체를 얻을 수 있습니다만, 이것도 완전한 해결방법은 아닌것이 UIWebView도 일하고 NSURLConnection도 따로 일하다보니 Request가 두번 날라가더라고요.

애플에서 이렇게 상식적인 API를 막게 되면 가장 큰 문제점은 윗분의 '설득' 입니다. 윗분을 설득하기가 힘듭니다. 아니 당연히 이거 쉽게 되는거 아니냐..애플에서 막아서 어렵습니다..아니야 니가 잘 찾아보지 않아서 그런거야..방법을 찾아라..윗분 입장에선 부하직원이 '안된다' 라는 말을 싫어하다보니 어떻게든 방법을 찾아야 합니다.

근데 정말 방법을 찾기 힘든 경우도 있습니다. 애플에서 가장 근본적인 API를 막았는데..제가 전지전능한 애플의 API를 뚫을 수는 없잖아요. 그래서 제가 최근 제 개인적인 의견을 이렇게 적었습니다.

보통 프로그래밍 언어는 프로그래머가 자유롭게 구현할수 있도록 최대한의 API를 지원한다. 그래서 개발자들은 이런 풍부한 API 제공에 익숙하다.

그런데 모바일 분야는 그 하드웨어 자원의 한계 때문에 API 제공에 제약이 따른다.

그나마 스마트폰으로 발전하면서 모바일 개발이 일반 PC프로그래밍 수준까지 자유로와 졌지만 그래도 API를 용이하게 제공하지 않는 경우가 있다.

더구나, 아이폰 API는 상식적인 선에서 제공할만한 API도 애플에서 막은 경우가 있다.

그리고 무엇보다 왜 이 API를 막았는지 애플에서 공식적으로 공지도 하지 않는다.

API를 막은 경우 이 API를 뚫기 위해 dll을 분석하는 방법도 없다.

이 경우 막힌 API를 해결하기 위해 다른 방법을 찾아야 한다.

결국, 이 다른 방법을 찾기 까지 기니긴 시간이 소요되곤 한다.

애플의 아이폰 API와 언어를 쓴다는 것은, 애플에서 허용되는 한도내에서만 프로그래밍 할수 있다는 것을 애플 개발자 인증서를 구입할때부터 암묵적으로 인정하고 개발하는 것이다."

* 관련 사례 3가지..(생략)

혹시 이글을 보시는 아이폰 개발자 분들 계시나요? 필드에 계신 아이폰 개발자분들은 어떻게 생각하시는지요~!