@implementation Shape 에 구현해 놓은 메소드들을 보자. @implementation Shape - (void) setFillColor : (ShapeColor) c { fillColor = c; } - (void) setBounds : (ShapeRect) b { bounds = b; } - (void) draw { // draw 는 구현하지 않는다. } @end Shape 에서 draw 를 구현하지는 않지만 하위 클래스가 상속받아 구현하도록 항상 정의한다. 하위 클래스에서 -(void) draw 를 구현하면 된다.
@interface Circle : NSObject @interface 지시자 다음에는 클래스 이름이 따라온다. 콜론(:) 뒤에 오는 식별자가 상속받으려는 상위 클래스의 이름이다. Objective-C 는 다중 상속을 지원하지 않는다. @interface Circle : Shape @end // Circle @interface Rectangle : Shape @end // Rectangle * Circle과 Rectangle의 인터페이스를 Shape에서 상속
Circle fillColor bounds setFillColor: setBounds: draw Rectangle fillColor bounds setFillColor: setBounds: draw 이와 같이 중복되는 부분이 많으면 비효율 적이다. 중복되는 코드를 한곳에 합쳐서 정리 하는 방법 - 상속. Shape 클래스를 상속받아 Circle 과 Rectangle 를 정의 하면 이와 같다. Circle 클래스를 수퍼클래스( 부모클래스 )라 부른다. Circle 과 Rectange 클래스를 서브클래스 ( 자식클래스 ). Circle 과 Rectangle 은 Shape 로 부터 상속을 받았기 때문에 Shape의 인스턴스 변수 fillColor 와 bounds 를 받는다. 메소드 또한 상속.
* 메소드 선언 (method declarations) : 내가 지원하는 기능이라고 선언 - (void) draw; - (void) setFillColor: (ShapeColor) fillColor; - (void) setBounds: (ShapeRect) bounds; ----------------------------------------------- - (반환타입) 메소드 이름: (반환타입) 인수; - 기호는 메소드를 선언한다는 의미.
@interface Circle : NSObject + @interface Circle : 컴파일러에게 "Circle이라는 이름을 갖는 새 클래스를 위한 인터페이스가 있다"고 알려준다. + NSObject : 컴파일러에게 "Circle클래스가 NSObject 클래스를 기반으로 한다"는 것을 알려준다. 모든 Circle은 NSObject이기도 하며 또한 NSObject 클래스가 정의하고 있는 모든 것들을 상속받는다는 것을 알려준다.
Xcode에서 프로그램을 편집하고 있는 경우, 프로그램을 실행할 때 파일 경로 전달은 이렇게 한다. 우선, Xcode의 왼쪽 파일 목록에서 Executables를 아래로 펼치고, 프로그램 이름을 더블 클릭한다. 그럼, [Executables "파일이름" Info] 창이 뜨는데, 여기서 Arguments 섹션에 있는 + 기호를 클릭하고 실행 인수를 입력한다. 이 인수는 파일의 경로가 되겠다. 이제 이 창을 닫고 프로그램을 실행한다. Xcode는 실행인수를 파일의 argv 배열에 전달한다.
NSString 요소는 상당히 많은 수의 기능을 담고 있으며 코코아에서 문자열이 팔요한 곳이면 언제 어디서나 사용된다. NSString 의 주요 메소드는 Foundation/NSString.h에서 선언되어 있다. NSString 은 내용의 변경이 불가능하다. 일단 메모리에 문자열이 할당되면 다음에 문자열을 바꾼다고 그 자리에 들어가지 않고 다른 메모리영역에 할당된다. NSString 의 기능 : - 문자열의 길이를 알려줌 -다른 문자열과의 비교 -정수 또는 실수로의 값 변환 등등등..... Ex) NSString *strTest = @"1234"; NSLog(@"length : %d, integer value = %d", [strTest length], [strTest integerValue]); //l..
Mac OS X 는 Apple의 현 CEO인 스티브 잡스(Steave Jobs)가 운영했던 NeXT의 객체지향 기술을 활용하고 있다. 1988년 NeXT가 개발한 NeXT 컴퓨터는 Unix를 기반으로 한 Machintosh 이상이라고 불릴 정도로 진보적인 GUI 환경을 보였다. 이 NeXT 컴퓨터의 기본 소프트웨어인 NEXTSTEP (후에 멀티 플랫폼 환경을 지원하면서 OPENSTEP으로 개명)의 개발언어가 바로 Objective-C 이다. 그리고 Mac OS X 에서 애플리케이션을 실행하기 위해 사용되는 Cocoa API는 OPENSTEP의 주요 API를 계승하고 발전시킨 것이다. 사실 Cocoa API 에 사용되는 NS라는 접두어는 NEXTSTEP에서 유래된 것이다. - Cocoa API 는 접두사 ..
Object-C 에서는 #import 라는 전처리기 지시자를 사용한다. #import 는 #include 와는 달리 같은 헤더 파일이 여러번 임포트되더라도 단 한번만 읽는다. #include 를 쓰다보면 헤더 파일 내에서 또 다른 헤더 파일을 인클루드 하는 경우가 종종 있는데, 이런 식으로 하다보면 매크로나 타입의 정의가 그 횟수만큼 반복되면서 중복 정의 에러가 발생하기 쉽다. - #import 는 그파일에서 실제로 #import 가 같은 헤더 파일을 여러번 포함해도 헤더 파일이 한번만 포함된다는 것을 보장.
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=1004047&sliceId=1&docTypeID=DT_KB_1_1&dialogID=58286951&stateId=0 0 58231530 핵심은 vmware-vdiskmanager -x 100Gb vm.vmdk 이 방법으로 늘리고 VMWARE 옵션에서 Expand 시키거나 파티션 매직으로 합쳐도 무방
vmware에서 Mac OS X Guest Packege를 이용하여 iDeneb v1.6 10.5.8 lite edition을 설치 인스톨은 Lenovo ThinkPad T400 노트북에서 했습니다. 처음엔 무작정 x86osx.com 에서 보고 여기저기서 다운받아 설범이(10.6) 리테일도 설치해보려 했으나 무한 재부팅 현상으로 포기하고 해킨토시로 넘어왔습니다. 시작하기전에 vmware가 설치된 PC의 CPU가 가상화 기술을 지원하느냐에 따라 패치를 한 커널을 별도로 설치하는 등 할일이 많아 집니다. 전 가상화 지원 CPU이기에 패스~ㅋ iDeneb CD 이미지가 부팅되기 위해서는 부트로더 CD 이미지가 vmware에 인식이 되게 해야 하는데요 guest O/S 유형별로 다른 방식을 사용하게 됩니다. 윈..