다양한 이니셜라이저 ──────────────────────────────────── alloc 클래스 메소드로 생성한 인스턴스를 초기화하기 위해서 init 메소드를 실행한다는 것은 앞에서 설명했습니다. 이 init 메소드처럼 인스턴스를 초기화하는 메소드를 이니셜라이저(initializer)라고 부릅니다. 클래스에 따라서는 다양한 상황에서 편리하게 사용할 수 있도록 여러 개의 이니셜라이저를 가지고 있는 것도 있습니다. Cocoa 환경에서는 관습적으로 이니셜라이저의 메소드명은 반드시 'init'으로 시작합니다. NSDate 클래스의 이니셜라이저의 예 NSDate 클래스의 이니셜라이저는 인스턴스를 실행한 시점의 날짜와 시각을 데이터로 가지도록 초기화되지만, 특정한 날로 지정해서 초기화하고 싶은 경우도 있을 ..
기본 자료형 변수와 객체형 변수의 차이 ─────────────────────────── int형 등 기본 자료형 변수와 객체형 변수는 저장되는 내용에 차이가 있으므로 주의가 필요합니다. 예를 들어 기본 자료형인 경우에는 변수의 값 자체가 저장됩니다. int num1; num1 = 3; 예를 들어, 또 다른 변수 num2에 num1을 대입하면 num2에도 역시 '3'이라는 값이 저장됩니다. int num2; num2 = num1; 반면 객체형 변수의 경우에는 실제 인스턴스를 참조하는 값(C언어의 포인터)이 저장됩니다. NSDate *date1; date1 = [[NSDate alloc]init]; 또 다른 변수 date2에 date1의 값을 대입하면, date2와 date1은 같은 인스턴스를 가리키게 됩..
description 메소드와 포맷 지정자 '%@' ────────────────────────────── description 메소드는 인스턴스의 내부정보를 나타내는 문자열을 반환하는 메소드입니다. 이 메소드는 루트 클래스인 NSObject에 정의되어 있는데, 각 크래스에서는 필요에 따라 재정의 합니다. 이처럼 슈퍼클래스의 메소드를 서브클래스에서 재정의 하는 것을 오버라이드라고 합니다. NSDate 클래스의 description 메소드는 인스턴스의 내부에 저장되어 있는 날짜와 시각 데이터를 문자열 형식으로 반환하도록 오버라이드 되어 있습니다. 그런데 NSLog 함수의 포맷 지정자인 '%@'는 Objective-C의 문자열 즉, NSString 객체의 내용을 표시하기 위해서 사용했지만 사실은 그 이외의 ..
메소드의 사용 ─────────── 다음은 NSDate 클래스를 사용해 현재의 날짜와 시각을 표시하는 프로그램입니다. #import int main (int argc, const char * argv[]) { NSDate *now; // 1 NSString *nowStr; // 2 now = [[NSDate alloc]init]; // 3 nowStr = [now description]; // 4 NSLog(@"%@", nowStr); // 5 return 0; } 위 소스를 설명 드리자면 1에서는 NSDate 클래스의 인스턴스용 변수 now를 2에서는 NSString 클래스의 변수 nowStr을 선언하고 있습니다. 모두 객체형이므로 변수 앞에 '*'가 필요한 점에 주의해야합니다. 3에서는 alloc +..
NSObject 클래스 ───────────── 인스턴스를 생성할 때는 alloc 메소드를 이용한다고 설명했습니다. 그런데, NSDate의 클래스 레퍼런스를 찾아봐도 alloc 메소드에 대한 설명은 보이지 않습니다. 객체지향 언어에서는 어떤 클래스의 자원을 바탕으로 또 다른 클래스를 작성하는 상속이 많이 이용됩니다. alloc 메소드는 NSDate 클래스가 상속하고 있는 NSObject 클래스에 있는 메소드 입니다. 이 때 바탕이 되는 클래스를 슈퍼클래스(superclass), 그것을 상속하는 클래스를 서브클래스(subclass)라고 합니다. NSDate 클래스는 NSObject 클래스의 서브클래스 입니다. NSDate -(상속)-> NSObject 이 NSObject 클래스는 Cocoa 환경에서 모든 ..
클래스에 준비되어 있는 메소드 파악하기 ────────────────────────────── 인스턴스를 생성하면 그 클래스에 준비되어 있는 다양한 메소드를 이용할 수 있습니다. 물론 그렇게 하기 위해서는 클래스에 어떤 메소드가 준비되어 있는지를 알아 둘 필요가 있습니다. 이 때 활약하는 것이 온라인 매뉴얼입니다. 온라인 매뉴얼은 Xcode의 [help] 메뉴에서 [Developer Documentation]을 선택하면 표시됩니다. 오른쪽 위에 있는 [Search] 필드에 키워드를 입력해 도큐멘트를 검색할 수 있습니다. 지금부터 나오는 설명은 Xcode3을 예로 설명합니다. 온라인 매뉴얼의 툴 바에 있는 [Home] 메뉴에서 [Mac OS X 10.6 Core Library]를 선택하여 [Core Ref..
인스턴스가 생성되는 과정 ──────────────────── 인스턴스화, 즉 기존의 클래스로부터 인스턴스를 생성하기 위한 흐름은 다음과 같습니다. (1) 인스턴스를 저장하기 위한 변수를 선언한다. (2) 인스턴스를 생성한다. 인스턴스를 저장하는 변수의 선언 먼저 인스턴스 변수의 선언입니다. 여기서는 int형이나 float형 같이 C언어에 원래부터 있던 자료형과 Objective-C 객체의 데이터를 구별하기 위해서 전자를 기본 자료형, 후자를 객체형이라고 부르겠습니다. 인스턴스를 저장하기 위해서는 기본 자료형 변수의 선언과 마찬가지로 사전에 객체형 변수를 선언해야 합니다. 이 때 다음과 같은 형식으로 사용합니다. 기본 자료형 변수의 선언과 달리 변수 앞에 *가 붙어 있다는 점에 주의해야 합니다. (Obj..
인스턴스 메소드와 클래스 메소드 ────────────────────────── 클래스에 준비되어 있는 메소드는 인스턴스 메소드와 클래스 메소드의 2종류로 크게 나눌 수 있습니다. 인스턴스 메소드는 인스턴스에 대해 실행하는 메소드 입니다. 인스턴스 메소드의 실행 [인스턴스 메시지] 예를 들어, 다음 예에서는 myself라는 인스턴스의 이름을 구하는 name 메소드를 실행하고 있습니다. name1 = [myself name]; 이것은 개별 인스턴스에 대해서 실행하고 있으므로 인스턴스 메소드입니다. 이에 비해, 특정 인스턴스에 의존하지 않는 메소드를 클래스 메소드라고 부릅니다. 클래스 메소드는 다음과 같이 실행할 수 있습니다. 클래스 메소드의 실행 [클래스 메시지] 다음에 상세히 설명하겠지만 인스턴스를 생성..
- Total
- Today
- Yesterday
- 아이폰 어플리케이션
- Spring
- 자바스크립트
- iOS 개발
- Objective-C
- 오브젝트 C
- Spring Framework
- JSP
- SQL
- 티스토리챌린지
- 제이쿼리
- tomcat
- zero
- 자바
- IT
- Java
- oracle
- 오브젝티브 C
- JavaScript
- iBATIS
- Objective C
- 오블완
- iPhone
- jQuery
- MAC OSX 10.7
- 아이폰
- MySQL
- Object C
- Programming
- 아이폰 개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |