我创建了一个默认设置为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)];
}
答案 0 :(得分:4)
要在方法之外更改objectTemp
,您必须将指针传递给objectTemp
,这意味着methodCallWithObject
实际上需要指向指针的指针:
-(void) methodCallWithObject:(MyObject **)objectTemp {
*objectTemp = [NSValue valueWithCGPoint:CGPointMake(5.3f, 2.6f)];
}
(但是,让methodCallWithObject
返回一个新对象可能更有意义。)