如果想学习OC却苦于没有MAC电脑的同学,可以试着以下方法来解决

我们利用GNUstep学习Objective-C


第一步:安装需要的软件和编译环境


sudo apt-get install gnustep
sudo apt-get install gnustep-devel

第二步:写第一个OC代码

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog (@"hello world");
        [pool drain];
        return 0;
}
/*
PS::
需要注意一点:Objective-C2.0 里 
将 
NSAutoreleasePool *pool = [NSAutoreleasePool alloc] init]; 和 [pool drain]; 
换成了 
“@autoreleasepool { }" , 
如果只是想在ubuntu里学习一下Objective-C编程, 
可以不写NSAutoreleasePool、 [pool drain];这两行代码,也不报错!
*/
第三步:编译

gcc `gnustep-config --objc-flags` -lgnustep-base hello.m -o hello

如果编译过程中出现以下错误

gcc: error trying to exec 'cc1obj': execvp: No such file or directory


运行以下命令

sudo apt-get install gobjc

再次编译后运行

./hello

Executing the program will result in output similar to the following:

2009-09-15 10:48:39.772 prog1[12906] hello world


小技巧:

    每次编译总是要写一大串 

gcc `gnustep-config --objc-flags` -lgnustep-base .m源文件 -o 生成的可执行文件

    这里简化一下,写一个makefile,代码如下:

    

app:$(s)
        gcc `gnustep-config --objc-flags` $(s) -o app -lgnustep-base -lobjc 
clean: 
        rm *.d 
        rm app


每次执行都需要 

    

make s=.m源文件名 
//运行:
./app

//再次编译之前需要
make clean

编译多个文件使用
make s="t1.m t2.m t3.m"