Objective-C,为什么我需要把这个asterix放在这里,而不是在这里

时间:2014-04-07 14:40:48

标签: objective-c pointers

我的问题很简单,为什么我需要为NSString设置一个asterix而不是NSInteger?

    NSString *myString = [NSString stringWithFormat:@"Hello, world !"];
    NSInteger myInteger = 42;

2 个答案:

答案 0 :(得分:5)

NSInteger是int的typedef,而NSString是指向NSString类的对象的指针。

答案 1 :(得分:5)

对于Cocoa对象,您总是声明一个指针,因此您始终使用星号。你不能把对象本身放入变量中;你总是处理一个指向对象的指针。

对于其他事情,它取决于变量是否包含对象(在C意义上)或指向对象的指针 - 其他地方。如果变量应该包含该对象,那么您不要用星号声明它,因为您没有在其中放置指针。如果它应该包含一个指针,那么你确实用星号声明它。

在C和Objective C中,int是原始数据类型。如果你写int *,这意味着“指向int的指针”。

很少有链接可以帮助您理解它。

提供者: -

https://stackoverflow.com/a/5293419/1865424

http://boredzo.org/pointers/

https://stackoverflow.com/a/1173252/1865424