为什么这个方法声明中没有*?

Dev*_*ted 1 iphone pointers objective-c ios

以下是Apple文档中的方法声明: Learning Objective-C:Primer

- (void)insertObject:(id) anObject atIndex:(NSUInteger) index
Run Code Online (Sandbox Code Playgroud)

为什么没有*紧随其后NSUInteger.我认为所有对象都是指针类型,并且所有强类型指针都必须在*其后面有一个字符.

Jac*_*kin 11

NSUInteger不是一个对象类型,它是一个typedefunsigned int.

你真的想*在这个上下文中使用a的唯一原因是你想获得一个int的地址并在其中存储一些东西.(有些库通过错误消息执行此操作).一个例子:

-(void) methodName: (NSUInteger *) anInt {
    *anInt = 5;
}

NSUInteger a;
[obj methodName: &a]; //a is now 5
Run Code Online (Sandbox Code Playgroud)

  • 两个错误:NSInteger/NSUInteger/CFindex在64位系统上是64位类型,因为它们用于表示内存中的内容的长度/计数/偏移等内容.另外,你的意思是*anInt = 5. (2认同)