iPhone 개발을 하기로 맘 먹긴했는데, 정작 필요한 맥북이 없었으니;;;; 해킨할 방법을 찾아 http://x86osx.com을 헤매고 다닌 결과, 단비같은 소식이 있었습니다. 바로 U100이 해킨에 용이하다는 것!! 그리고 문득 떠오른 오래 전 구석에 던져놨던 my U100 !! "그래! 드뎌 니가 써먹을 곳이 생겼구나 ㅎ" 바로 U100을 집어들고 해킨에 들어갔습니다. 제가 참고한 자료는 http://x86osx.com/bbs/view.php?id=osxtips&no=1932&ksn=1&kss=1&ksc=0&kst=1&ksm=1&kw=u100 입니다. 필요한 재료는 1. MSIWindosx86.iso 파일 2. Leopard HD Install Helper_v0.3 (U100은 ODD가 없으므로,..
NSDate 와 NSData 는 이름이 같아서 같이 올리는게 아니다.^^;; 코코아(?)에는 plist라 불리는 클래스 객체들이 있는데 이를 프로퍼티 리스트 (property list) 라 부른다. 프로퍼티 리스트 클래스에는 NSArray, NSDictionary, NSString, NSNumber, NSDate, NSDate 가 있다. 먼저 NSDate 는 날짜 및 시간 처리를 위한 핵심적인 클래스이다. Ex) NSDate *date = [NSDate date]; NSLog (@"today is %@", date); 이 코드는 "today is 2010-02-10 13:16:02 -0400" 을 출력한다. Ex) NSTimeInterval secondsPerDay = 24 * 60 * 60; NSDat..
프로퍼티 (property)란 - 외부에서 접근할 수 있는 객체의 속성 Objective-C에서는 인스턴스 멤버 변수들의 값에 편리하게 접근하기 위해 @property 라는 지시어를 사용한다. 선언 방식은 다음과 같으며 @interface 내부에 선언 된다. - @property(속성) 타입 변수명; -(float)value; -(void)setValue:(float)newValue; ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ @property float value; 이와 같이 두가지 메서드를 선언한 것과 같은 기능을 하게 된다. 속성에는 다음과 같은 정의를 할 수 있다. readwrite (Default) property의 값을 읽고 쓸 수 있다는 것이다. readonly property의 값..
+ (id) stringWidthFormat: (NSString *) format, ...; 메소드를 + 기호로 선언했다면 그 메소드를 클래스 메소드라고 표시한 것이다. 이 메소드는 클래스 객체(클래스의 인스턴스 객체와는 다름)에서 왔으며 주로 클래스의 새로운 인스턴스를 만드는데 사용된다. 클래스 객체는 수퍼클래스와 클래스 이름을 가리키는 포인터, 그리고 클래스 메소드 목록을 가리키는 포인터를 가지고 있다. 아울러 클래스 객체는 새롭게 만들어진 클래스의 인스턴스 객체의 크기 정보를 바이트 크기로 가지고 있다.
클래스에 초기화 메소드를 만들어야 한다는 요구사항은 없다. 하지만 클래스에 따라서는 편의를 위해 여러개의 이니셜라이저를 제공하기도 한다. -많은 인수를 하나하나 모두 전달해야 하는 경우. -기본적인 값을 사용해서 간단하게 초기화하는 경우. -초기화를 위해 데이터를 메모리에서 읽어 들이는 경우. -파일에서 읽어들이는 경우. 등등... 여러 종류의 이니셜라이저 중에서도 인스턴스를 초기화하기 위해 반드시 실행되어야 하는 메소드를 지정된 이니셜라이저 (designated initializer) 라고 한다. #import #import @interface Point : Object { int x, y; } - (id) init; - (id) initWithPoint : (int) x int : (int) y; -..
새로운 객체를 만드는 방법은 [someClass new], [[someClass alloc] init] 같은 형식이 있다. 두 방법 모두 객체를 생성해 주는 것은 동일하지만 alloc과 init을 쓰는 것을 권장한다. 객체를 할당하고 초기화 했을때 비로소 객체의 초기화가 완성된다. Car *car = [Car alloc]; 은 에러없이 동작하겠지만 초기화를 하지 않았기 때문에 버그를 발생시킬 수 있다. 메모리 할당의 중요성에 상응하는 것이 초기화 객체를 할당하고 초기화 하는 방식. Car *car = [[Car alloc] init]; 이런식으로 alloc한 후 반환된 객체에 바로 연결해서 init 메소드를 보내는 방식은 매우 중요하다. 다음의 방식은 피하는게 좋다. Car *car = [Car allo..
사과 + [ : 코드 블록을 왼쪽으로 쉬프트한다. Tab : 코드를 완성한다. Esc : 코드 완성 메뉴를 보여준다. Control + / : 코드 완성에서 다음 입력 영역으로 이동한다. 사과 + Control + S : 스냅 샷을 만든다. Control + A : 커서를 라인의 시작으로 이동한다. Control + E : 커서를 라인의 끝으로 이동한다. Control + D : 커서에 인접한 문자를 지운다. 사과 + Shift + ↑ : 연결된 파일을 연다. 사과 + D : 북마크 추가한다. Option + 더블클릭 : 문서를 찾는다. 사과 + Option + Y : 디버거로 프로그램을 실행한다. 사과 + Shift + O : 다음 스텝으로 넘어간다. 사과 + Option + ? : 도움말 Doc 창 ..