你越来越进入C部分是Objective-C的内置称为在之上。
**是一个指针的指针。由于C中的函数按值取值,这意味着你不能在该函数中改变参数的值。但是,通过提供间接级别并将指针传递给指针,可以更改该值。
&意味着它是一个参考。如果一个参数需要一个**并且你有一个*变量,那么传递一个参数给它。
Foo *foo;
[self changeFoo: &foo];
- (BOOL)changeFoo: (Foo **)foo
{
// dereference the double pointer and assign a val = alloc init returns a *
*foo = [[Foo alloc] init];
return YES;
}
objective-c/cocoa中的一个常见用法是NSError。这本质上是一个争论。
NSError *err;
BOOL success = [self doSomething:@"Foo" error:&err];
- (BOOL)doSomething:(NSString*)withData error:(NSError**)error
{
}