다양한 이니셜라이저 ──────────────────────────────────── 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 +..
인스턴스 메소드와 클래스 메소드 ────────────────────────── 클래스에 준비되어 있는 메소드는 인스턴스 메소드와 클래스 메소드의 2종류로 크게 나눌 수 있습니다. 인스턴스 메소드는 인스턴스에 대해 실행하는 메소드 입니다. 인스턴스 메소드의 실행 [인스턴스 메시지] 예를 들어, 다음 예에서는 myself라는 인스턴스의 이름을 구하는 name 메소드를 실행하고 있습니다. name1 = [myself name]; 이것은 개별 인스턴스에 대해서 실행하고 있으므로 인스턴스 메소드입니다. 이에 비해, 특정 인스턴스에 의존하지 않는 메소드를 클래스 메소드라고 부릅니다. 클래스 메소드는 다음과 같이 실행할 수 있습니다. 클래스 메소드의 실행 [클래스 메시지] 다음에 상세히 설명하겠지만 인스턴스를 생성..
메소드의 호출 방법에 대한 예비지식 ─────────────────────────── Objective-C의 메소드 호출 방법은 조금 특수합니다. Java나 C++ 같은 일반적인 객체지향 언어를 경험하신 분들은 익숙해지기 전까지 조금 어렵게 느껴질 수도 있습니다. Objective-C의 메소드 호출 방식은 다음과 같습니다. 메시지 방식 [객체 메시지] 전체를 대괄호 []로 에워싸고 객체와 메시지는 사이에 공백을 두어 구분합니다. 이렇게 하면 Receiver인 객체로 메시지가 보내지고, 대응하는 메소드가 호출됩니다. 메시지의 반환값을 변수에 대입할 때는 다음과 같이 합니다. 메시지의 반환값을 변수에 대입 변수 = [객체 메시지] 이 때 메시지가 게터 메소드처럼 인수를 가지지 않는 메소드인 경우에는 메소드의..
NSLog 함수에 대해서 ──────────────── NSLog(@"Hello, World!"); NSLog 함수의 인수로는 Objective-C의 문자열을 전달합니다. 여기에서 Objective-C의 문자열이라는 것은 정확하게 NSString 클래스의 인스턴스 입니다. 원래는 어떤 클래스에서 그 오브젝트인 인스턴스를 생성하기 위해서는 보통 alloc 메소드 드으이 전용 메소드를 실행할 필요가 있습니다. 다만 문자열은 빈번하게 사용하기 때문에 다음과 같은 형식으로도 NSString 클래스의 인스턴스를 간단히 생성할 수 있도록 되어있습니다. NSLog, NSString과 같이 Cocoa 환경의 클래스와 함수의 이름은 'NS'로 시작합니다. 이는 Mac OS X의 전신인 'NeXTSTEP'의 약자입니다. ..
헤더파일의 저장소 ─────────────── #import 이것은 Foundation 프레임워크의 'Foundation.h'라는 헤더파일을 읽어 들이는 프리프로세서 지시문인데, 프레임워크와 헤더파일은 어디에 있는걸까요? 우선 프레임워크의 경우 Mac OS X에서는 시동 디스크의 [시스템] - [라이브러리] - [Frameworks] 폴더 아래에 프레임워크별 폴더로 나뉘어 저장되어 있습니다. Foundation 프레임워크의 경우는 [Foundation.framework] 폴더에 프레임워크 본체와 헤더 파일이 저장되어 있습니다. Foundation 프레임워크의 헤더파일은 [Foundation.framework] 폴더의 [Headers] - 'Foundation.h'가 됩니다. 헤더 파일은 일반적인 텍스트 ..
- Total
- Today
- Yesterday
- 자바
- Java
- tomcat
- Objective-C
- 자바스크립트
- 오브젝티브 C
- iBATIS
- 제이쿼리
- 아이폰
- 티스토리챌린지
- SQL
- Spring
- iPhone
- oracle
- JavaScript
- 아이폰 어플리케이션
- MAC OSX 10.7
- MySQL
- Objective C
- jQuery
- 아이폰 개발
- 오브젝트 C
- Spring Framework
- Programming
- JSP
- zero
- iOS 개발
- 오블완
- Object C
- IT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |