【问题标题】:Passing nil object pointer in Objective-C在 Objective-C 中传递 nil 对象指针
【发布时间】:2015-04-16 20:51:57
【问题描述】:

在将它作为参数包含在方法中之前,我创建了一个默认设置为 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)];

}

【问题讨论】:

标签: objective-c pointers object null


【解决方案1】:

为了在方法之外改变objectTemp,你必须将一个指针传递给objectTemp,这意味着methodCallWithObject实际上需要一个指针指向一个指针

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

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

【讨论】:

  • 他说了什么!真正的问题是理解指针和对象是什么......
猜你喜欢
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
相关资源
最近更新 更多