关于Objective-c的指针

luc*_*uca 4 pointers objective-c nsstring dereference

根据我的理解(如果我错了,请纠正我):

int x, count = 10;
int *hello;
hello = &count;
x = *hello;
Run Code Online (Sandbox Code Playgroud)

这里变量x和count声明为整数类型.此外,变量计数的值为10.

hello是一个指向整数类型的指针.然后为hello分配计数地址.为了访问count的值,你好前面必须有一个星号,即*hello.

因此,x被赋予计数中的任何值,在本例中为10.

然而...

Fraction *myFraction = [[Fraction alloc] init];
[myFraction someMethod];
Run Code Online (Sandbox Code Playgroud)

在这里,如果我理解正确,myFraction是一个指向Fraction类实例的指针.

myFraction指向(或者更确定地指定了地址)已分配内存并初始化的对象.

当然,为了访问myFraction指向的对象,我应该写:

 [*myFraction someMethod];
Run Code Online (Sandbox Code Playgroud)

鉴于x访问count的值的方式,当然为了访问该对象,应该写这个而不是:

[myFraction someMethod]; 
Run Code Online (Sandbox Code Playgroud)

另外,如果我有

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *str = @"Programming can be a headache";
NSLog (@"%@\n", str);
Run Code Online (Sandbox Code Playgroud)

为什么str被视为上面的对象?或者是str一个对象,在这种情况下,为什么我要让它指向一个NSString类的实例?当然,我应该能够只为str分配一个对象?

MBy*_*ByD 5

目标c中对象的所有使用都是通过对象引用完成的,例如指针.

  • Objective C语法允许您在不解除引用的情况下处理对象,这与C/C++不同.
  • str是类型NSString(as myFraction)@"Programming can be a headache"的对象引用,也是类型的对象引用NSString,因此您可以将其赋值给str.