블로그 이미지
'무른모'란 부드럽다라는 뜻을 가진 '무르다'라는 말과 도구, 연장을 뜻하는 '연모'라는 순 우리말의 합성어로 소프트웨어를 말합니다. seanhigher

카테고리

분류 전체보기 (161)
Blog srart (16)
Dev Center (94)
Real Life (13)
Mac life (21)
Naver life (17)
Total633,817
Today41
Yesterday88
Objective-C 프로그래밍을 경험해 봤다면 어색하게 느껴지지 않겠지만, 그렇지 않은 사람들에게는 IBOutlet과 IBAction이 무슨 역할을 하며 왜 필요한지에 대해서 의아해 할 것이다. 간단해 보이지만, 아이폰 프로그래밍에 있어서 없어서는 안될 중요한 존재이다. 이것들이 없다면 아무리 멋지게 프로그램을 작성하여도 연결선이 끊어진 조이스틱을 두드리는 것과 마찬가지가 되는 것이다.



아웃렛(IBOutlet)
아웃렛은 IBOutlet 키워드를 사용하여 선언하는 인스턴스 변수들이다. 아웃렛이 하는 역할은 정말로 단순하다. 컨트롤러 헤더 파일에 선언한 객체를 인터페이스 빌더가 알아 볼 수 있도록 해준다. xib파일 안의 객체와 연결을 하고자 하는 모든 인스턴스 변수들은 IBOutlet 키워드로 다음과 같은 형식으로 선언이 되어야 한다.

@property (nonatomic, retain) IBOutlet UILabel *newLabel;

아웃렛으로 선언된 인스턴스 변수는 프로젝트가 빌드되면서 가장 먼저 전처리기에서 번역되고, 그것이 xib 파일과 연결된 객체라는 사실이 컴파일러에게 전달된다. 프로젝트의 실행과 관련된 컴파일에서는 아무런 영향을 미치지 않는것이다. 하지만, 이것이 없다면 인터페이스 빌더는 어떻게 객채들과 연결해야 할지 모른체 빌드를 실행하게 될 것이다. 마치 지금 당장 전화를 걸어야 하는 상황에서 어떤 전화기를 가지고 어디로 전화를 해야 할찌 모르는 상황과 비슷하다고 할 수 있다.


액션(IBAction)
액션은 IBOutlet과 마찬가지로 컨트롤러 헤더파일에서 하나의 메소드 형태로 선언되어 그 역할을 하게 된다. IBAction이 선언되면 이 메소드가 액션 메소드라는 것을 인터페이스 빌더에게 알려주게 되며, 컨트롤러를 통해서 호출이 가능해 진다. 액션 메소드는 헤더파일에서 다음과 같은 형식으로 선언된다.

 - (IBAction)newAction:(id)sender;

메소드의 형식을 갖는 IBAction는 void를 리턴 타입으로 가진다. 액션 메소드는 변수값을 리턴하지 않는다는 것이다. 액션 메소드는 하나의 인자값을 갖게 되는데, 이것은 sender라는 이름의 id 타입으로 정의되고, 포인터 값이 전달된다. 이것은 똑같은 액션 메소드를 호출하는데 있어서 어떤 액션을 통해서 메소드를 호출하였는지 구분하는 구분자의 역할을 하게 된다. 만약 버튼이 하나밖에 없는 것 처럼, 액션의 구분이 필요하지 않다면 뒷부분의 '(id)sender' 를 제거하고 작성하면 가능하다. 하지만 버튼이 여러게 있는데 '(id)sender' 를 제거하면 모든 버튼이 동일한 역할만을 하게 될 것이다.


생성자와 변경자를 자동으로 생성해주는 @property를 선언하자!
C++ 나 JAVA같은 객체지향 언어를 다루다 보면, 기능을 모듈화 하고, 데이터를 보호하기 위해 하나의 객체에 생성자와 변경자를 만드는 것을 보게 된다. 생성하는 클래스나 객체가 적을때는 그리 어렵지 않겠지만, 늘어나는 클래스 객체의 getter(생성자 메소드)와 setter(변경자 메소드)를 일일이 생성하는 것은 매우 지루한 일이 될 수 있다. Objective-C에서의 프로퍼티는 이러한 Getter 와 Setter를 자동으로 생성해 주어 개발자의 수고를 조금이나마 덜어준다. 오브젝티브 C의 프로퍼티에는 몇가지 속성들이 있는데 retain, nonatomic 의 두가지의 속성은 아이폰 애플리케이션을 작성하는데 있어서 많이 사용되는 속성이다.

retain : 리테인은 메모리에 할당된 특정 객체를 참조하는 것을 의미한다. 각 객체는 리테인 카운트라는 데이터를 가지게 되는데, 객체가 호출될때마다 카운트 값을 증가시키고, 릴리즈 될때에는 카운트 값을 하나 감소시키면서 그 객체가 사용되고 있는지의 여부를 판단하게 된다. 이것은 메모리를 효율적으로 관리하기 위한 하나의 수단으로 이용된다.

nonatomic : 접근자와 변경자 메소드가 생성되는 방법을 바꾼다. 이 옵션에 대해 디폴트로 설정되어 있는 atomic의 경우 멀티 스레딩이 가능한 코드들을 추가로 생성하게 된다. 하지만 명시적으로 nonatomic을 설정함으로 멀티 스레딩의 가능성을 줄이고, 불필요한 것들로 인한 오버헤드를 상당부분 줄일 수 있다. 어느정도 자원 사용에 있어서 한계가 있는 아이폰 프로그래밍의 경우, 메모리에 사용에 대한 치밀한 접근이 필요하다.



아웃렛, 액션, 프로퍼티는 아이폰 프로그래밍을 하는데 있어서 필수적인 요소들이다. 어렵지 않은 역할을 가지고 있지만, 그 기본을 탄탄히 함으로써 좀더 규모있는 애플리케이션을 다루게 될때 당황하지 않고 적절하게 대응할 수 있는 것이다.

Posted by seanhigher

댓글을 달아 주세요

  1. 2010.10.12 00:38 신고 금메달.아빠  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다. 구글에서 검색하였더니 http://blog.daum.net/yellowjini/5216139 에도 이글과 똑같은 글이 나오는 군요. 누가 원본인지 모르겠지만, 블로그 올리신 시각이 빠른 분께 이렇게 댓글을 남겨 둡니다.
    아이폰을 다루지 못해봐서 아직 이해하기에 먼 글입니다. 아이폰을 다룰 기회가 되면 다시 들러봐야 겠습니다.

    행복한 하루 되세요.

대부분의 프로그램을 시작하게 되면 가장 먼저 배우게 되는 것이 'Hello World!'라는 문자열을 화면에 출력하는 것이다. 아무것도 아닌것 같지만 이것은 굉장히 큰 의미를 지닌다. 세상을 향해 안녕이라고 외치는 것, 아이폰 프로그래밍 세계를 향해 안녕이라고 소리치는 것이다!


새 프로젝트 생성.
Xcode에서 새 프로젝트를 생성하기 위해서는 메뉴에서 'File' -> 'New project' 를 차례로 선택하면 된다. 이번에 만들게 될 Hello world! App은 복잡하지 않은 애플리케이션이므로 'View-based Application'으로 선택하여 프로젝트를 생성하도록 한다.


그림1. 새 프로젝트 생성

새로운 프로젝트를 만들겠다고 선택을 하면 위의 그림과 같이 프로젝트 명과 프로젝트를 저장할 폴더를 설정할 수 있다. 프로젝트 명은 자신이 원하는 것으로, 구분이 가능하도록 입력하고, 프로젝트가 저장될 폴더도 다른 데이터들과 구분된 폴더를 사용하는 것이 나중에 관리를 하기가 수월하다.


그림2. 프로젝트 창

프로젝트 명과 저장할 폴더를 지정하고 나면 위의 그림과 같은 프로젝트 창을 볼 수 있다. 사용자마다 위의 그림과 약간 다를 수도 있지만, 새로운 프로젝트를 생성했다면 새 프로젝트가 가지고 있는 파일들은 동일하기 때문에 걱정하지 말길 바란다. 'Hello world' 프로젝트의 가장 기본적인 기능은 텍스트를 화면에 출력하는 것이다. 코드를 입력하여 출력할 수도 있지만, 훨씬 더 수월한 인터페이스 빌더를 이용해서 출력할 수 도 있다. 인터페이스 빌더를 사용하기 위해서 왼쪽 'Group&Files'창에 있는  'Resource' -> 'Hello_worldViewController.xib'를 더블 클릭한다.


인터페이스 작성.
다음과 같은 인터페이스 빌더의 화면이 실행 될 것이다. 만약 이전에 Xcode를 사용하였다면 가장 마지막에 사용된 형태의 인터페이스 빌더의 모습이 나타날 것이다.


그림3. 인터페이스 빌더

가장 가운데 윗 부분에 있는 창이 메인 창이다. 안에 있는 아이콘들이 xib 파일이 포함하고 있는 객체들을 가리킨다. 아래에 있는 view 창은 실제로 화면에 보여지는 모습을 그대로 재현해 내는 객체이다. 이 화면을 통해서 아이폰에 어떻게 표현될 것인가를 예상 할 수 있다. 왼쪽에 있는 Library 윈도우는 화면에 표현할 수 있는 객체 라이브러리를 나타낸다. 라벨, 버튼, 메뉴등 기본적으로 필요한 도구들을 가지고 있다. 오른쪽에 있는 Attributes 윈도우는 각 객체의 속성을 제어할 수 있다. 이 두개의 윈도우를 통해서 코딩없이 다양한 디자인이 가능하다. 'Hello world!' 문자열을 화면에 출력하기 위해서는 텍스트를 표현하기 위한 'Label' 객체가 필요하다.


그림4. 라벨 객체 추가

왼쪽에 있는 Library 윈도우에서 'Label'을 선택하여 View 윈도우로 끌어다 놓으면 라벨이 추가되는 것을 볼 수 있다. 기본 이름이 'Label'로 되어있기 때문에 더블클릭하여 'Hellow world!'로 문자열을 새로 입력한다. 이제 화면에 'Hello world!' 문자열을 출력하기 위한 준비 작업은 다 마쳤다. 이제 실행하기만 하면 된다.


시뮬레이터로 실행하기.
인터페이스 빌더에서 지금까지 작업한 파일을 저장한다. 인터페이스 빌더는 인터페이스에 관한 메뉴만을 가지고 있기 때문에 실행을 하기 위해서는 Xcode 프로젝트 창에서 실행을 해야만 한다. Xcode 창에서 'Build' -> 'Build and Run' 메뉴를 실행한다.

 
그림5. Hello world! 프로젝트 시뮬레이션

잠시동안 프로젝트가 빌드되고, 위와 같은 깔끔한 화면에 'Hello world!'가 출력되는 시뮬레이션을 볼 수 있을 것이다. 비록 매우 간단한 프로젝트지만, 이제 아이폰 프로그래밍에 한발을 내딛게 된 것이다.

Posted by seanhigher

댓글을 달아 주세요

전세계적으로 아이폰의 열풍은 대단하다. 전화만 가능했던 단순한 피처폰에서 뭐든지 '다' 된다는 스마트폰으로의 세대변화를 이끈 주역이라고 할 수 있다. 그리고 이러한 아이폰을 더욱 더 강력하게 만드는 애플의 CEO인 스티브 잡스의 대중을 사로잡는 마력과, 10만개를 훌쩍 넘어버린 아이폰 앱 스토어의 풍부한 애플리케이션이 있었기 때문이다.


OS X
아이폰 개발을 하기위해서는 특별한 개발 환경이 필요하다. 바로 OS X 이다. 윈도우, 리눅스와는 다른 애플만의 직관적인 OS이다. 애플은 처음 애플 컴퓨터를 만들때 부터 하드웨어와 소프트웨어를 통일하여 만들어왔다. 유닉스 기반의 안정적이고 사용하기 편안 컴퓨터를 모토로 개발해 온 것이 지금의 iMac을 만들게 되었다. 그와 함께 발전하게 된것이 OS X 이다. 이전에는 모든 부품들을 애플에서 만들었지만, 2006년 인텔의 CPU를 사용하면서 좀더 경제적인 제품을 생산하게 되었고, 부트캠프의 사용과 함께 조금은 더 나아진 호완성을 가지게 되었다. 이때부터 애플은 아이맥이 널리 알려지게 되었고, 많은 사람들이 한번쯤은 가져보고 싶은 아이템이 되었다. 인텔칩을 사용하게 된 애플덕분에 일반 컴퓨터에서도 해킨토시라 하여 불법으로 개조된 OS X 가 인터넷 상에 돌아다니게 되었으며, 이것은 애플을 더욱 더 알리는 계기가 되었다.


Objective-C
유닉스 기반의 오에스 텐은 일반적인 C언어가 아닌 오브젝티브 C 언어를 사용하고 있다. 순차적인 C의 단점을 보완한 오브젝티브 C는 객체 지향적인 관점에서 좀더 편안한 프로그래밍을 제공해주며, 유연함과, 풍부한 라이브러리, M(model)-V(view)-C(control)의 프로그래밍 구조를 확고히 하였다. 개발자들이 창의적인 생각으로 개발을 할 수 있도록 여건을 만들어 주었다.


Xcode
엑스코드는 애플의 코코아(Objective-C)프로그래밍을 가능하도록 하는 통합개발도구이다. 너무나도 직관적인 인터페이스를 만들어주는 IB(InterfaceBulider)은 이미 많은 프로그래머로 하여금 Xcode와 코코아 프로그래밍에 빠져들게 만들었다. 코코아 터치를 사용하는 아이폰 프로그래밍은 Xcode 도구를 통해서 개발에 참여할 수 있다. 새롭긴 하지만, 조금만 해본다면 그 편리함에 놀라게 될 것이다.


Xcode for iPhone SDK 설치하기.
애플제품을 사용하는, 아니 애플 사이트에 등록한 사람이라면 누구나 Xcode를 다운로드 받을 수 있다. 물론 OS X에서만 설치할 수 있다는 단점이 있긴 하지만... 아이폰 SDK는 애플개발자센터에서 다운로드 받을 수 있다.


그림1. 애플 개발자 센터

애플 개발자 센터는 크게 세가지로 나뉘어 지는데, 맨 처음에 있는 'iPhone Dev Center'을 선택하도록 한다.


그림2. 로그인

SDK를 다운로드 받기 위해서는 로그인이 필요하다.


그림3. 아이폰 개발자 페이지

로그인을 하면 위와 같은 화면을 볼 수 있다. 맨 위의 다운로드를 선택하여 다운로드 페이지로 이동할 수 있다. 이미 Xcode가 설치되어 있는 사람이라도 다시 iPhone SDK를 다운로드 받아서 설치하면 된다. Leopard나 snow Leopard는 상관없지만, Tiger이전의 버전은 Xcode 2.x 버전을 다운로드 받아 설치해야 한다.


그림4. iPhone SDK 디스크 이미지 파일

'iPhone SDK and Tools for Snow Leopard' 패키지를 클릭하여 설치를 진행한다.


그림5. 설치 시작 화면


그림6. 설치 동의

설치를 하는데는 그리 어려운 부분들이 없다. 설치에 관한 동의를 몇번 하고, 설치 위치, 설치 항목들을 선택하고 나면 Xcode의 설치가 완료된다.


그림7. iTunes 종료 요청 메시지.

iPhone SDK를 설치하는 도중에 iTunes가 실행되고 있다면 위와 같이 종료하고 설치를 진행해 달라는 메시지가 나온다.


그림8. 설치 완료.

설치가 진행되고 위와 같이 설치가 완료되었다는 메시지를 볼 수 있다.


그림9. iPhone SDK의 실행파일 위치

iPhone SDK(Xcode)는 자신의 하드의 'Developer -> Applications' 디렉토리에서 Xcode라는 실행파일을 찾을 수 있다.


그림10. iPhone SDK 실행 화면.

Xcode를 실행하면 환영 메시지 후에, 위와 같은 화면을 볼 수 있을 것이다. 왼쪽에 보면 알 수 있듯이, 윗부분은 아이폰 애플리케이션을 위한 프로젝트가 있고, 아래쪽에는 OS X 애플리케이션을 위한 텝이 자리하고 있다. 이제부터 하나씩 아이폰 개발을 배워보도록 하자.



Posted by seanhigher

댓글을 달아 주세요

최근에 달린 댓글

글 보관함