【发布时间】:2021-01-23 23:42:50
【问题描述】:
我刚刚开始学习 Objective-C。我很困惑地看到某些类型的变量有时用 * 星号声明,而另一些则不是。例如,这些是用 * 标记的:
@property NSString *firstName;
NSString * mainString = @"Hello World!";
NSNumber *longNumber = @42l;
NSArray *unsortedStrings = @[@"gammaString", @"alphaString", @"betaString"];
这些都不是:
int someInteger = 42;
NSInteger anInteger = 64;
id firstObject = @"someString";
NSRange substringRange = [mainString rangeOfString:@"long"];
我从 Apple 的文档中找到了这个解释:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html#//apple_ref/doc/uid/TP40011210-CH4-SW1
这两个属性都适用于 Objective-C 对象,因此它们使用星号表示它们是 C 指针。
但是这个解释太笼统和模糊,我无法理解这个概念。我知道type * 表示它是一个指针类型,并且这个类型存储了该类型的指针。但是为什么有些类型是用* 声明的,有些不是呢?
【问题讨论】:
-
请注意,“*”来自 C 语言,而不是 Objective-C。正如 Rob 在他的回答中解释的那样,它的意思是“指向”。
标签: ios c objective-c