iPhone 개발 첫 발을 떼며
2011-01-12 17:20:18

갤럭시 S 개발이 Dalvik machine의 자바 여서 너무 쉽게 되었기 때문일까?

아이폰도 그냥 쉬울줄 알았던 것이 화근 ㅋㅋ

Objective-C라는 것이 존재 한다는 사실도 모르고 있었다;

있다는 것을 알고 보니 음; 아직 문법은 안드로메다지만 읽을 수 있을정도이니

책을 보면서 하면 할 만 할 듯?

버튼 클릭을 하기 위해서는 Outlet, Action을 지정해줘서 뭐할지 이게 뭔지만 적어주면 된다.

그리고 나면 C#과 비슷하다.

문제는 전체 흐름이나 Delegate의 역할을 잘 모른 다는 것 ㅠ.ㅠ

너무 아무런 조작을 내가 할 수가 없으니 원..

▼ more
버튼을 만들고 연결하기.(iPhone) - 2
2011-01-12 16:15:38

구성요소들이 상호간에 동작할 수 있도록 다양하게 연동해보자.

1단계 : 뷰 윈도우 안에서 File's Owner 아이콘을 레이블로 연결 하는 것이다. 그런데 왜 File's Owner 아이콘을 사용하는 것인가?

=> UIViewContoller나 UIViewController의 하위 클래스에 대한 인스턴스가 초기화 될때, 인스턴스는 nib로 부터 자기 자신을 초기화 한다. 따라서 xib파일로 부터 Contoller 클래스가 로딩된다. MainWindow.xib파일이 ViewContoller를 나타내는 아이콘을 포함 하였기 때문에 애플리케이션이 실행되었을때 ViewContoller의 인스턴스는 자동으로 생성 할 것이다. 그와 같은 일이 일어날때, 그 인스턴스는 자동으로 ViewContoller를 불러들인다. xib파일은 메모리에 올라가고 인스턴스는 파일의 소유자가 된다.

아웃렛 : 인터페이스 빌더에게 이것은 nib 파일안에 있는 객체와 연결되는 인스턴스 변수라고 알려주는 힌트를 제공하는 것뿐.

액션 : 컨트롤러 클래스에 포함된 메서드. 이 메서드 역시 IBAction이라는 특별한 키워드로 선언되어 있으며, 이키워드는 메서드가 액션 메서드라는 것을 인터페이스 빌더에게 알려주고, 컨트롤리 메서드를 호출 하게 끔 도와준다.

▼ more
버튼을 만들고 연결하기.(iPhone)
2011-01-12 15:57:15

구성요소들이 상호간에 동작할 수 있도록 다양하게 연동해 보기.

* interface builder의 아이콘들.. View 는 음 그거 겠지;

1. File's Owner

- 어떤 nib 파일에서든 항상 첫 번째 아이콘이고 디스크에서 로드 된 nib 파일 객체를 나타낸다. 바꿔 말하면 File's Owner 는 nib 파일의 사본을 소유한 객체이다.

2. First Responder

- 모든 nib 파일의 두 번재 아이콘은 퍼스트 리스폰더라고 불린다. 퍼스트 리스폰더는 사용자가 현재 상호작용하는 객체이다. 예를 들어 사용작 ㅏ현재 텍스트 필드에 데이터를 입력하는 중이라면 해당 텍스트 필드가 현재의 퍼스트 리스폰더다. 퍼스트 리스폰더는 사용자가 인터페이스와 상호작용할 때마다 바뀌기 때문에, 퍼스트 리스폰더 아이콘을 이용하면 현재 어떤 컨트롤이나 뷰가 퍼스트 리스폰더인지 알아내는 코드를 작성할 필요 없이 퍼스트 리스폰더와 수월하게 통신할 수 있는 수단을 제공한다.

▼ more
Cocoa 객체의 일생 - 참조 횟수
2011-01-12 11:57:28

코코아는 reference counting이라는 방법을 사용하는데 이는 retain counting이라고도 불릴때 도 있다.

모든 객체는 그 객체의 유지 횟수, 즉 참조횟수라고 하는 정수 값을 가지고 있다. 어떤 코드에서 그 객체를 사용하고 있다면 그 코드는 객체의 참조 횟수를 증가시켜 ⎡이 객체가 사용되고 있다⎦ 라고 알려준다. 그 코드가 객체 사용을 다 끝내면 참조 횟수를 줄여서 객체가 더 이상 사용되지 않음을 알려준다. 참조 횟수가 0이 되면 아무도 그 객체를 사용하지 않게 되므로 소멸되고, 객체가 사용했던 메모리를 시스템에 반환하게 된다.

참조 횟수가 0이 되어 객체가 소멸되려고 할 때 Objective-C는 자동적으로 dalloc 메시지를 해당 객체에게 보낸다. 이는 소멸자 정도라고 생각해도 되고 ~로 시작되는 C++ 의 소멸자를 오버라이드 할 수 있듯이 이도 오버라이드 가능하다. 당연한 거다;

dealloc을 직접 호출 하면 안된다. 객체가 소멸될 때는 Objective-C가 자동 적으로 호출한다. 현재 참조 횟수를 알아내기 위해서는 retainCount 메시지를 객체에 보내면 된다.

- (id) retain;

- (void) release;

- (unsigned) retainCount;

retain은 id를 반환한다. 그렇게 함으로써 참조 호출의 반환 값으로 다른 메시지를 보낼수 있다. 그리고 참조 횟수를 증가시키고 나서 다른 작업을 바로 요청할 수 있다. 예를 들어 [[car retain] setTire: tire atIndex:2];은 car의 참조횟수를 증가시키고 setTire:atIndex: 작업을 진행한다.

- 이 글은 Apress Bj 퍼블릭의 아이폰과 맥 OS X 개발을 위한 오브젝티브-C 2.0 이라는 책의 9장. 메모리 관리에서 참조하였다.

▼ more