2011年7月28日 星期四

Objc Hello範例: Ubuntu上使用GNUstep and gobjc


最近使用Objective-C越順手,想在Ubuntu環境中也能寫,
以及使用Mac/iOS 的Foundation函式,經參考 GNUstep on Linux 這篇文章,記錄以下心得。

環境安裝 Ubuntu 10.10:

  • sudo apt-get install gobjc 
  • sudo apt-get install gnustep
  • sudo apt-get install gnustep-devel


範例:
hello.h, hello.m and main.m
#include <foundation foundation.h>
@interface Hello: NSObject {
}
- (void) show;
@end

@implementation Hello

- (id) init
{
self = [super init];
NSLog(@"%s", __FUNCTION__);
return self;
}
- (void) show
{
NSLog(@"Hello GNUObjc with GNUstep");
}
- (void) dealloc
{
NSLog(@"%s", __FUNCTION__);
[super dealloc];
}
@end

int main(int argc, char **argv)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Hello *obj = [[Hello alloc] init];
[obj show];
[obj release];
[pool drain];
return 0;
}

Makefile

STEPFLAGS= $(shell gnustep-config --objc-flags) -lgnustep-base
OBJCFLAGS= -g $(STEPFLAGS) -O
OBJCFILES= hello.m main.m
OBJS = $(OBJCFILES:.m=.o)

.SUFFIXES: .m .o

all: hello

.m.o:
$(CC) $(OBJCFLAGS) -c $<

hello: $(OBJS)
$(CC) -o $@ $^ -lobjc -lgnustep-base

run: hello
./$^

clean:
rm -f *.o *.d hello

執行結果:

2011-07-28 21:53:25.540 hello[12151] -[Hello init]
2011-07-28 21:53:25.541 hello[12151] Hello GNUObjc with GNUstep
2011-07-28 21:53:25.541 hello[12151] -[Hello dealloc]

請由此下載範例源始碼

(ps: 圖片來源為http://wiki.gnustep.org 所有)

沒有留言: