What’s in the template? 模板里有什么?

当你建好这个项目的时候,会发现这个项目里面只有一个文件, "main.m",而在这个文件里面,你只会看到几行代码。然而就是这几行代码,就已经向我们介绍了几个非常重要的概念,你看到的代码是这样的:

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
return 0; }

如果你有一些 C 语言的编程经验,你会发现其中大多数代码,是常规的命令行应用程序的写法。 但其中有两个部分是 Objective-C 所独有的:@autoreleasepool 和 @"Hello,World!" 。

"@"是 Objective-C 中非常非常常见的符号,所以你最好赶紧适应它。"@"的意思是「接下来执行的代码是 Objective-C ,而不是 C 语言。 」NSLog()是一个类似于 swift 中print()的函数,在这个模板代码中,用来打印消息。如果在"Hello, World!"之前没有@符号,那么她就会被认为是 C 字符串(ASCII中的字符数组,以0结尾)。Objective-C 和 Swift 一样,有着属于自己的字符串数据结构。在这里, NSLog()期望接收的是 Objective-C 字符串,而不是 C 字符串,这就是为什么必须写上"@"符号。

@autoreleasepool 的意思是「我要开始分配大量的内存了;当我完成的时候,请自动释放。」其后的花括号区间("{}")内的所有内容都是这个自动释放池的一部分,在上面的这段示例代码里,就是整个程序。

请让我简单地提一下用 C 语言写的代码,特别是函数的写法。就是这一句:

int main(int argc, const char * argv[]) {

下面是每个符号的含义:

  • int:此函数返回一个整数。
  • main:函数名为 "main()" 。
  • int argc:函数的第一个参数是一个称为 argc 的整数。
  • const char * argv []:函数的第二个参数是一个名为 argv 的字符串数组。

这个带有参数的 main() 函数是创建命令行程序的标准方法,它会在程序运行时自动调用。

在继续下一步之前,还有一些小知识点:

  • 首先,注意 "return" 用于从函数返回一个值,这点和 Swift 一样。
  • 第二,每个语句必须以分号结束。也就是说,在着 NSLog()和 return 分别以分号结束。
  • 第三,"//" 是添加注释,这点也和 Swift 一样。

results matching ""

    No results matching ""