Objective-C对象是通过值传递还是通过引用传递?

gra*_*aci 2 object objective-c pass-by-reference pass-by-value

所以我有类似的东西:

- (void) printString:(NSString *)string 
{
    NSLog(@"%@", string);
}


NSString *string = @"Blach";
[self printString:string];
Run Code Online (Sandbox Code Playgroud)

string被价值或参考传递吗?像NSError这样的东西怎么样?

NSError *error = [NSError errorWithDomain:someDomain 
                                     code:-101 
                                 userInfo:someInfo];

-(NSString *) doSomething:(BOOL) val withError:(NSError **)error {
    if(!val)
    {
       *errorPtr = [NSError errorWithDomain:something
                                       code:-101 
                                   userInfo:someInfo];
    }
}
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 5

永远不能通过指针以外的任何东西来引用Objective-C对象,所以对于所有意图和目的,一切都是通过引用传递的.也就是说,实际的指针值是按值传递的,就像在C中一样.

  • @iRaviiVooda - http://en.wiktionary.org/wiki/for_all_intents_and_purposes (2认同)