프로그래밍/아이폰,아이패드 5

iOS, Object-C를 이용한 아이폰/아이패드 개발에서 Delegate에 대한 이해-2. 이벤트

이벤트에 대해 알아보자. 이벤트는 이해하기 어렵지 않으니 Delegate에 대한 첫번째 발걸음으로 적합하다. 이벤트는 객체지향 프로그래밍의 가장 기본적인 설계 기법 중 하나라 할 수 있다. 객체지향 프로그래밍의 특징이 여러가지 있지만 그 중 하나가 “재사용성”이다. 재사용성과 이벤트가 무슨 관계가 있을까. 아래 마이클잭슨의 사례로 한번 생각해 보자. 마이클 잭슨 한국에 오다. 100여명의 스탭과 함께. 이제는 고인이 된 마이클 잭슨이 한국에 온 적이 있다. 그가 온다는 것만으로도 울트라 빅빅빅 이슈였지만, 함께 이슈가 되었던 건 100여명의 스탭과 함께 오기 때문에 모셔오는 비용이 어마어마하다는 거였다. 같이 오는 100여명의 스탭 중에는 헤어디자이너, 무대 감독, 음향 감독 뿐 아니라 전용 요리사들도 ..

iOS, Object-C를 이용한 아이폰/아이패드 개발에서 Delegate에 대한 이해-1. prolog

iOS에서 Object-C를 이용해 아이폰/아이패드 개발을 할 때 절대 빼 놓을 수 없는 필수 요소가 Delegate이다. 이게 없으면 개발을 할 수가 없을 정도인데, 블로그에서 delegate에 대해 찾아보면 이에 대한 정보가 정말 빈약하다. 그래서 이 연재를 만들기로 했다. Delegate에 대해 이해하려면 꽤 많은 걸 알아야 한다. 우선 interface나 abstract class 에 대해 알아야 한다. 자바, C#, 델파이, C++, Action Script에서는 interface나 abstract class 라고 부르지만, Objective-C에서는 protocol이라고 부른다. 그리고 callback 에 대해서도 이해해야 한다. Callback은 단순해서 좀 이해하기 쉬운데, 보통은 A 클래..

XCode (4.2)에서 C++과 Objective-C 를 동시에 쓰기

이 간단한 걸 기억 못해서 어제 종일 끙끙댔다. 그래서 기록을 남겨본다 XCode는 C++ 과 Objective-C 를 동시에 쓸 수 있.. 쓸 수 있을수도 있도록 지원하고 있다. 그래서 나는 중요한 클래스는 그냥 C++ 로 만들고 UI와 관련된 부분만 Objective-C 로 만들려고 생각하고 있다. 그런데, 오랜만에 해보니 이게 잘 안되는거다. 블로그 검색해도 잘 나오질 않고. 방법은 간단하다. 1. C++클래스를 사용하는 Objective-C 파일의 확장자를 .m 에서 .mm 으로 바꿔준다. .cpp 확장자를 .mm으로 바꾸는 게 아니라, .m 파일의 확장자를 .mm으로 바꾸는거다. 이렇게만 해도 되는데, 만약 이래도 안되면, 2. .cpp 파일의 속성을 아래와 같이, "Objective-C++ s..

혼자 버그라고 오해한 XCode 4.2의 컴파일 에러

오늘 그렇잖아도 시간도 별로 없었는데, 짬날때마다 이것 때문에 삽질 좀 했슴미다. 너무나도 단순한 문제인데 컴파일이 안되어 이거이 XCode 4.2의 버그라고 생각했는데, 역시나 제 잘못이었슴미다. 진짜 간단한, Apple에서 제공한 tutorial을 따라하는 중이었는데, #import @interface HelloView : NSView { NSString * m_pstrText; // 여기서 보여줄 문자열 } -(void) test; @end 위와 같은 클래스를 정의해 놓고, 외부에서 test() 메소드를 호출하겠다고만 하면 "AutoreleasePool count reference issue" 라고 시작하는, 암튼 저런 함수가 없다 라는 말도 안되는 컴파일 에러 메시지가 나온다. clean을 아무리..

자바, iOS의 Object 와 id 에 대해

오랜만에 프로그래밍 관련 글을 쓰는군요. 자바의 Object 나 iOS의 id에 대해 궁금해 하시는 분이 계셔서 글을 쓰게 되었습니다. ^^; 자바의 Object에 대해 먼저 설명하겠습니다. Object는 클래스다. 자바의 Object는 클래스입니다. 자바에는 무수히 많은 클래스가 있습니다. 거의 모든 걸 다 클래스로 만들어 놓았죠. 그래서 자바를 만든 제임스 고슬링의 별명이 "Every thing is classes" 라고 합니다. 이 말은 굳이 클래스로 만들지 않아도 될 것을 클래스로 다 만들어서 속도저하를 일으키고 있다는 걸 빗대고 있는 거라 생각되네요. 암튼. 자바에 무수히 많은 클래스가 있는데, 그 클래스들마다 공통으로, 반드시, 꼭 구현되어야 하는 기능들이 있습니다. 자동차를 예를 들어 보죠...