你越來越進入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
{
}