在Objective-C中传递nil对象指针

时间:2015-04-16 20:51:57

标签: objective-c pointers object null

我创建了一个默认设置为nil的对象,然后将其作为参数包含在方法中。如果对象仍然是零,我稍后检查。该对象设置为在方法中更改,但结果仍为零。我希望该方法能够改变nil对象。如果我有方法内部的代码替换方法调用,则导致它不是nil。

MyObject *objectTemp = nil;

[self methodCallWithObject:objectTemp];

if  (objectTemp == nil) NSLog(@"nil");
else NSLog(@"NOT nil");

// always results in "nil"

方法:

-(void) methodCallWithObject:(MyObject)objectTemp {

    objectTemp = [NSValue valueWithCGPoint:CGPointMake(5.3f, 2.6f)];

}

1 个答案:

答案 0 :(得分:4)

要在方法之外更改objectTemp,您必须将指针传递给objectTemp,这意味着methodCallWithObject实际上需要指向指针的指针

-(void) methodCallWithObject:(MyObject **)objectTemp {
    *objectTemp = [NSValue valueWithCGPoint:CGPointMake(5.3f, 2.6f)];
}

(但是,让methodCallWithObject返回一个新对象可能更有意义。)