objective-c浅析之hello world

我的工作环境是在ubuntu中, 所以需要先安装gnustep。
sudo apt-get install gnustep-devel

 从网上找到的一段经典的 hello world:
#import <Foundation/Foundation.h>

int main(int argc, char **argv){
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"Hello, Objective-C!\n");
    [pool release];
    return 0;
}

 保存为test.m,执行编译命令:
gcc test.m `gnustep-config --objc-flags` -lgnustep-base -o test

 测试
./test

OK,基本的环境和测试已经成功。作为一个objective-c的门外汉,通过百度和google,从这个脚本中得到的新知识如下。
  1. 变量前面的星号表示这是一个指针变量。
  2. objective-c中对象用中括号来进行对象调用。如:[[NSAutoreleasePool alloc] init] 转换到PHP中就类似于:
    NSAutoreleasePool->alloc()->init();
  3. 关于字符串前面@这个符号的解释:objective-c中引号里的字符串默认是原始的C字符串,而@符号就是把C的字符串转成NSString的一个简写,而且这个@符号据说不支持中文。
  4. NSAutoreleasePool是对象引用计数自动处理器。后面的[pool release] 表示调用pool的release方法进行内存释放。
 好奇心驱使,对这个小程序进行了一下精简:
#import <Foundation/Foundation.h>

int main(){
    NSLog(@"Hello, Objective-C!\n");
    return 0;
}


你可能感兴趣的:(linux,Objective-C,ubuntu)