Object C 기초 1

iOS/Object C 2010.11.24 13:46

객체를 id 타입으로 표현하며, c언어의  (void *)과 유사
잘못된 id 타입 사용은 런타임 에러 발생하기 쉽다.

객체 사용 방법
 c++/java 언어  Object C언어
 String strValue;
strValue.cal(10, 10);
NSString strValue = [[NSString alloc]init];
[strValue cal:10 data2:10];


인터페이스 정의
@interface 와 @end 사이에 구현
@end 뒤에 ;(세미콜론) 붙이지 않는다.

@interface 클래스명: 슈퍼 클래스명
{
   인스턴스 변수 선언;
   ...
}
메소드 선언;
...
@end

메소드 선언 예
 c++/java 언어  Object C언어
void setValue(int row, int col)
- (void) setValue:(int)row column:(int)col

메소드 선언시 타입이 명시 되지 않는 경우 id 타입이 생략되어 있음.
- (id)initWithObject:(id)obj;
- initWithObject:obj;

인터페이스 사용 예제
@interface Prawn : NSObject
{
    id order;
    int currentValue;
}
- (id)initWithObject:(id)obj;
- (void)dealloc;
- (int)currentValue;
- (void)setCurrentValue:(int)val;
- (double)evaluation:(int)val;
@end

클래스 구현 (implementation)
슈퍼 클래스명과 인스턴스 변수명은 기술하지 않는다.
인터페이스에 선언한 메소드는 구현부에 반드시 정의되어야 한다.
인터페이스에서 메소드를 선언하지 않았다면 구현부에서 오버라이드 하지 않아도 된다.

@implementation 클래스명
{
   메소드 정의
   ...
}
메소드 선언;
...
@end

메소드 사용 예제
- (double)evaluation : (int)val
{
    double tmp = [order proposedBalance:val];
    if (currentValue > (int) tmp)
        tmp = [order proposedBalance:val*1.25];
    return tmp;
}

인스턴스 자신을 참조 하는 키워드
 c++/java 언어  Object C언어
this.
self.


간단한 클래스 사용 예제
Volumn.h
#import <Foundation/NSObject.h>

@interface Volume : NSObject
{
    int val;
    int min, max, step;
}

- (id) initWithMin:(int)a max:(int)b step:(int)s;
- (int) value;
- (id) up;
- (id) down;
@end

Volume.m
#import "Volume.h"

@implementation Volume
- (id) initWithMin : (int)a max:(int)b step:(int)s
{
    self = [super init];
    if (self != nul) {
         val = min = a;
         max = b;
         step = s;
    }
    return self;
}

- (id) value
{
    return val;
}

- (id) up
{
    if ( (val += step) > max)
        val = max;
    return self;
}

- (id) down
{
    if ( (val -= step) < min)
        val = min;
    return self;
}
@end

main.m
#import "Volume.h"
#import <stdio.h>

int main(void)
{
    id v, w;
    v = [[Volume alloc] initWithMin:0 max:10 step:2];
    w = [[Volume alloc] initWithMin:0 max:9 step:3];

    [v up];
    printf("%d %d\n", [v value], [w value]);

    [v up];
    [w up];
    printf("%d %d\n", [v value], [w value]);

    [v down];
    [w down];
    printf("%d %d\n", [v value], [w value]);
    return 0;
}


컴파일 방법 (기본적으로 cocoa는 시스템이 제공하는 Foundation 프레임 워크 사용)
 cc  -o test main.m Volume.m -framework Foundation

저작자 표시
신고

'iOS > Object C' 카테고리의 다른 글

[펌] Object C 타입간 변환  (0) 2012.01.02
[펌] Objective-C 기초  (0) 2011.12.21
[펌] NSString & NSMutableString  (0) 2011.12.13
[펌] Objective-C 많이 쓰는 수학함수 모음  (0) 2011.12.13
Object c 관련 애플 문서  (0) 2011.08.19
Object C 기초 1  (0) 2010.11.24
Posted by 까칠코더.


티스토리 툴바