返回值的访问器与返回引用的访问器?

时间:2011-11-20 21:11:47

标签: objective-c accessor

根据我的理解,以下两个getter方法都引用了实际的对象。 那两者有什么区别呢? 何时以及为什么要使用第二个getter方法?

- (MyObject *)myObject
{
   return _myObject;
}

- (void)getMyObject:(MyObject **)myObject
{
   if (!myObject)
   {
      *myObject = _myObject;
   }
}

2 个答案:

答案 0 :(得分:4)

你不会使用第二个。

除非,否则您希望以后因不遵守标准惯例而让人/自己感到困惑。

如果还有另一段数据也可以返回,那就更有意义了,例如看NSManagedObjectContext

- (BOOL)save:(NSError **)error

该方法的重要结果是YES / NO保存,但我们还可以获取NSError对象来检查是否存在错误。

答案 1 :(得分:0)

在Objective C中,“对象”是一个C指针,因此对象值实际上已经与结构引用相同(如果您希望代码在Objective C运行时之间可移植,则具有隐藏字段的不透明结构)。

所以没有“对抗”。

YouR的第一个例子是。

当算法需要引用引用或指针指针时,有一些特殊情况,但不常见。这将是你的第二个例子。