Creating variables 创建变量

Objective-C 和 Swift 不同,它不支持自动类型推理,同时在 Objective-C 中,几乎所有的属性都会被创建为变量。这就意味着,你必须要告诉 Xcode 你想要使用的每一个数据的类型。

现在,请用下面这行代码替换原有的 "// insert code here...":

int i = 10;

这一行代码创建了一个新的整数,并且给它赋值为10。注意啦,这里没有 var 或者 let ,并且默认 "i" 是一个变量。如果你想创建一个常量,就要这样写:

const int i = 10;

在 Objective-C 里很少有人会这么做就对了。

如果你想创建字符串,就需要用到 NSString 这个类,请注意,在 Objective-C 里,它是一个类,而不是结构体。而 "NS" 正是一个由于没有命名空间而存在的前缀,同样你需要用上表示 Objective-C 语句的符号 "@"。

试试把上面的内容串联起来写一写:

NSString str = @"Reject common sense to make the impossible
possible!";

然而如果你真的这么写了,Xcode 会跟你说 "Interface type cannot be statically allocated.", 也就是「连接类型的数据,是不能静态初始化的」。

Xcode 的意思是,就像 NSString 一样,无论什么样的对象,必须要用一种特殊的方法来初始化,这种方法就叫做「指针」。你可以来回忆一下在 Swift 里,我们对可选值是如何的纠结,那么在 Objective-C 里面,指针就有那么的纠结。我会在指针的那一章里更详细地阐述它的概念,但是目前,你至少要知道,指针的指向是本地的内存某一位置,在那里存了一些你想要的数据。举个例子,比如说如果你想存一张照片,它占了 30M 的内存。当你想用这张照片的时候,总不能把所有的数据都拷贝过来,然后才能找到这张照片吧?用指针的话,直接找到照片对应的这 30M 空间就好啦。

在 Objective-C 里面,所有的对象都必须用指针来存储,而 NSString 又是一个对象,所以刚刚那行代码是要这样写的:

NSString *str = @"Reject common sense to make the impossible
possible!";

看这个星号(*),这就是指针的标记。所以说, str 并不是 NSString 对象,而是一个指针,指向这个 NSString 对象在内存里的位置。

我们再看一个数据类型:数组,这里叫做 NSArray, 在这里你也需要在数组的开头写一个 @ 符号,并且因为我写的是一个字符串数组,在每个字符串前面,也要用上 @ 符号。

NSArray *array = @[@"Hello", @"World"];

在后面的章节里,我会更详细地解释「字符串」这些数据类型。到此为止,你应该已经知道怎么创建变量了,那我们就可以进行下一步了。

results matching ""

    No results matching ""