Categories
iOS/Swift

[iPhone] Object-C : Class, Object, Message

Object-C는 아이폰 개발에 사용되는 언어입니다.

C와 C++의 중간 개념이라고들 하던데 확실히 C언어에 객체의 개념을 추가하고 적절한 라이브러리가 추가된 모습이더군요.

공부하면서 한번 정리를 해보도록 하겠습니다.

객체를 생성하기 위해 클래스를 선언하는데 일반적으로 C++을 해보셨던 분들이 이해하기 좀 어려운 모습을 가지고 있습니다.

XCode에서 New -> New File 항목에서 Object-C Class를 선택하여 클래스 파일을 추가합니다.

Foo 라는 클래스를 만들어 보면 Foo.h와 Foo.m 파일이 생성됩니다.

Foo클래스에 변수와 메서드들을 추가해 봅시다. 다음과 같은 방법으로 합니다.

Foo.h

@interface Foo : NSObject {
    IBOutlet NSTextField *textField;
}
- (IBAction)seed:(id)sender;
- (IBAction)generate:(id)sender;
@end

Interface라는 이름을 가지고 선언하긴 하지만 엄연히 클래스를 선언하는 구문입니다.

Foo라는 클래스는 NSObject를 상속받았습니다. NSObject는 NextStep에서 만든 최상위 클래스입니다.

모든 NS로 시작하는 클래스들은 모두 최상위로 NSObject를 상속받습니다. 마치 자바의 Object와 같네요.

또한 NSTextField형의 textField라는 이름의 인스턴스변수(맴버변수)를 선언하였습니다.

IBOutlet은 외부의 다른 객체를 가리킬수 있는 변수를 뜻합니다.

추후에 올려보겠지만 UI상의 컴포넌트 객체들과 변수를 연결할 수 있습니다.

또한 -로 시작하는 줄들은 메서드들입니다. seed메서드만 보면 IBAction을 반환하고 id타입의 sender를 첫번째 인자로 입력 받습니다.

위의 클래스를 구현하면 다음과 같이 합니다.

Foo.m

@implementation Foo

- (IBAction)seed:(id)sender {
    ...
}
- (IBAction)generate:(id)sender {
    ...
}

위와 같이 메서드의 몸체를 구현할때 맴버 인스턴스 변수인 textField에 마음껏 접근할 수 있습니다.

객체 자기 자신을 가르킬 경우에는 자바나 C++에서는 this를 사용하지만 여기서는 self를 사용합니다.

인자를 받을 넘길때도 특이한점이 있군요. 두개 이상의 인자를 받을경우에는 굉장히 복잡해 집니다.

- (int)addNumbers:(int)left rightNumber:(int)right {
    return left + right;
}

위와 같은 메서드는 addNumbers:rightNumber: 라고 부릅니다. 보통의 프로그래밍을 하던 느낌으론 굉장히 의문이 가는 부분입니다.

addNumbers는 int형 값을 반환하는 메서드입니다. 첫번째 인자는 int형 left 변수입니다.

그렇다면 rightNumber는 저게 뭘까요.  보통 인자를 가진 메서드를 셀렉터(Selector)라고 부릅니다.

위의 코드를 이렇게 바꿔 보면 이해가 쉬울것 같네요.

int addNumbers(int left, int right) {
    return left + right;
}

실제로 사용되는 인자의 이름은 left, right이지만 rightNumber와 같은 식의 나누어진 셀렉터를 사용하여 메서드의 인자의 역할을 더욱 분명히 할 수 있는 장점(?)이 있습니다.

이제 함수를 호출하는 방법을 알아보겠습니다.

NSMutableArray *array = [NSMutableArray alloc];

Object-C에서 메서드 호출을 메세지를 보낸다고 표현합니다. 위의 경우에는 다음과 같이 생각하시면 될 것 같네요.

NSMutableArray array = new NSMutableArray();

위와 같이 동적으로 메모리를 잡고 array변수로 가리키게 합니다. 이제 초기화 하는 init 메세지를 보내보겠습니다.

NSMutableArray *array = [NSMutableArray alloc];
[array init];

array는 리시버(receiver)라고 합니다. 이 리시버에 init메세지를 입력합니다.

다음과 같이 위의 두줄을 한줄로 사용할 수도 있습니다.

NSMutableArray *array = [[NSMutableArray alloc] init];

인자를 입력할 경우에는 다음과 같이 사용합니다.

[array addObject:foo];

다수의 인자를 입력할때는 다음과 같은 방법으로 합니다.

[array insertObject:foo atIndex:bar];

위에서 언급했듯이 insertObject는 메서드명이기도 하면서 변수를 가리키는 셀렉터이기도 합니다.

다음에는 아이폰으로 간단한 예제를 만들어 올리도록 하겠습니다.

Categories
하루를살아가며

[X61] X61-A43에 MAC OS X (Leopard) 설치하여 아이폰 개발하기

X61을 구매한후 해킨에 여러번 도전하였으나 안되는게 너무 많아 번번히 실패했었다.

시간이 지난 후 현재의 해킨은 발전에 발전을 거듭하여 내 X61이 거의 완벽에 가까울정도로 해킨토시로 변모하도록 해주었다.

나의 해킨토시 라이프를 위한 노력을 간단하게 정리해 보도록 하겠다. 간단하게 정리 하였기 때문에 처음 도전하시는 분들은 무슨 말인지 알아보기 힘들지도 모른다.

그럴때는 국내 최대의 해킨토시 커뮤니티를 방문하여 검색해 보자.

1. 무선랜 교체
기존의 INTEL 4259 무선랜카드를 ATHEROS 무선랜 카드로 교체하여야 한다.
본인은 ATHEROS ABG MINI PCI EXPRESS(40Y7026) 카드를 구매하여 직접 교체하였다.
AGN을 포기해야만 했지만 N을 지원하는 무선랜도 별로 없고 IBM정품이라 작동도 잘 된다.

2. 파티션 분할
파티션을 분할하여야 한다. 비스타일 경우 GParted Live! 를 사용하자. 시디로 구워 부팅하면 파티션의 볼륨 크기를 자유자재로 조정 가능하다.
다만 조정하고 나면 비스타가 제대로 부팅이 안되는 현상이 발생한다. 그럴 경우 비스타 설치 시디로 부팅후에 복구를 한번 돌려주면 다시 정상적으로 부팅이 되게 된다.
단순히 아이폰 개발을 위해 필요한 공간은 6G정도이다. 맥OS가 10G정도 차지한다고 할때 대략 20G정도(추가 유틸리티를 생각하면 30G가 적당하겠다)를 잡아주면 사용에 문제가 없을 것이다.

3. MAC OS X 설치
기존의 경우 Kalyway 10.5.2로 설치를 하였었는데 이상하게 무선랜이 안잡히는 현상이 있었다.
그래서 구한 두둥! iDeneb 10.5.5 는 정말 궁합이 잘 맞고 안정적으로 잘 되는 녀석인 것 같다.
iDeneb 10.5.5 배포 버젼을 구하여 설치하자. 위에서 따로 분할하여둔 20G를 맥 파티션으로 지정한 후에
설치직전의 사용자화에서 다음을 선택한다.

– 한국어
– ICHx 패치
– Power Management
– Atheros WifiAdapter

여기서 주의할 것은 X61 그래픽 카드의 경우 X3100이지만 드라이버를 따로 선택하지 않는다. 선택안해도 잘 잡히며 오히려 선택할 경우 에러가 발생한다고 한다.

4. Vista – Mac 듀얼 부팅
Vista 파티션이 Active되어있는 상태에서 맥을 깔아놓을 경우 맥은 흔적도 없이 비스타로만 부팅이 될 것이다.
이때에 비스타에서 Easy BCD를 설치하자, 파티션에 맥 파티션을 추가하고 저장하면 된다.
그럼에도 부팅시 선택화면이 뜨지 않을 경우 부트 파티션 선택 시간이 몇초인가 확인하자 0초인 경우가 있다. 적절히 높여주자.
Vista로 부팅할 경우에는 부팅 화면에서 Vista를 선택하면 되고 Mac으로 부팅 할 경우에는 Mac을 선택후에 Darwin 부트로더가 뜨면 다시 한번 맥 파티션을 선택해 주면 된다.

5. X61용 추가 드라이버 설치
아직 유선랜과 사운드 드라이버가 설치되지 않았다. 감동의 맥 초기화면을 감상 후에 다음을 설치하여 주자.



손쉬운 kext 파일 설치를 위한 헬퍼 유틸
1198628044.zip

X61용 사운드 드라이버
1006101278.zip
X61용 유선랜 드라이버
1389825717.zip


6. iPhone SDK 설치
iPhone Dev Center에 방문하여 iPhone SDK를 다운받자. 참고로 아이디가 있어야 한다. 없으면 가입하자.
SDK를 설치하면 XCode라는 개발 툴이 설치되고 아이폰 에뮬레이터 및 SDK등등 개발에 필요한 모든것이 설치된다.


7. 마치며
실제로 아이폰 개발을 해본 결과 문제없이 잘 되는 것을 확인하였다. 다만 앱스토어에 개발자프로그램을 등록하고 어플을 올리는것까지 가능한지는 모르겠다.
혼자서 자잘하게 공부해볼 머신으로는 충분하지 않을까 생각한다. 끝으로 듀얼 디스플레이까지 잘되는 X61을 보며 마치도록 하자.

Exit mobile version