카테고리 없음2013. 2. 6. 05:29


아래의 소스를 맥에서 컴파일 하려면,

cc voltest.m -o voltest -Wall -framework Foundation



#import <Foundation/NSObject.h>
#import <stdio.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


@implementation Volume
- (id)initWithMin:(int)a max:(int)b step:(int)s
{
	self = [super init];

	if (self != nil)
	{
		val = min = a;
		max = b;
		step = s;
	}

	return self;
}

- (int)value
{
	return val;
}

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

	return self;
}

- (id)down
{
	if ( (val -= step) < min )
		val = min;

	return self;
}

@end


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 = [ [Volume alloc] init];
//	w = [ [Volume alloc] init];

	[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;
}


리눅스에서 컴파일을 하려면 다음과 같이 수정하고,

gcc voltest.m -o voltest -Wall -lobjc




#import <objc/Object.h>
#import <stdio.h>


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

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

@end


@implementation Volume
- (id)initWithMin:(int)a max:(int)b step:(int)s
{
        self = [super init];

        if (self != nil)
        {
                val = min = a;
                max = b;
                step = s;
        }

        return self;
}

- (int)value
{
        return val;
}

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

        return self;
}

- (id)down
{
        if ( (val -= step) < min )
                val = min;

        return self;
}

@end


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 = [ [Volume alloc] init];
//      w = [ [Volume alloc] init];

        [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;
}



Posted by 쿨한넘