이후 관련 소스는 http://www.otierney.net/objective-c.html 를 참고했음.

Creating Classes

Fraction.h
#import <Foundation/NSObject.h>

@interface Fraction: NSObject {
    int numerator;
    int denominator;
}

-(Fraction*) initWithNumerator: (int) n andDenominator: (int) d;
-(void) print;
-(void) setNumerator: (int) n;
-(void) setNumerator: (int) n andDenominator: (int) d;
-(void) setDenominator: (int) d;
-(int) numerator;
-(int) denominator;
@end


Fraction.m
#import "Fraction.h"
#import <stdio.h>

@implementation Fraction
-(Fraction*) initWithNumerator: (int) n andDenominator: (int) d {
    self = [super init];
   
    if(self) {
        [self setNumerator: n andDenominator: d];
    }
   
    return self;
}

-(void) print {
    printf( "%i/%i", numerator, denominator );
}

-(void) setNumerator: (int) n {
    numerator = n;
}

-(void) setNumerator: (int) n andDenominator: (int) d {
    numerator = n;
    denominator = d;
}

-(void) setDenominator: (int) d {
    denominator = d;
}

-(int) denominator {
    return denominator;
}

-(int) numerator {
    return numerator;
}
@end


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

int main( int argc, const char *argv[] ) {
    // create a new instance
    Fraction *frac = [[Fraction alloc] init];
    Fraction *frac2 = [[Fraction alloc] init];
    Fraction *frac3 = [[Fraction alloc] initWithNumerator: 3 andDenominator: 10];

    // set the values
    [frac setNumerator: 1];
    [frac setDenominator: 3];
   
    // combined set
    [frac2 setNumerator: 1 andDenominator: 5];

    // print it
    printf( "The fraction is: " );
    [frac print];
    printf( "\n" );
   
    // print it
    printf("Fraction 2 is: ");
    [frac2 print];
    printf( "\n" );
   
    // print it
    printf("Fraction 3 is: ");
    [frac3 print];
    printf( "\n" );

    // free memory
    [frac release];
    [frac2 release];
    [frac3 release];
   
    system("PAUSE");

    return 0;
}


[클래스 메소드명]의 메소드 호출 방식
객체 할당 후 초기화 잊지말기
메소드 호출 시에 인자 넘기는 경우, 인자에 이름 붙이기 가능

Objective-C 다운 표현으로는 [receiver message]. 리시버에게 메시지를 보낸다고 표현

메소드 정의 시의 +/-
- Instance method
+ Class method