根据我的理解,以下两个getter方法都引用了实际的对象。 那两者有什么区别呢? 何时以及为什么要使用第二个getter方法?
- (MyObject *)myObject
{
return _myObject;
}
- (void)getMyObject:(MyObject **)myObject
{
if (!myObject)
{
*myObject = _myObject;
}
}
答案 0 :(得分:4)
你不会使用第二个。
除非,否则您希望以后因不遵守标准惯例而让人/自己感到困惑。
如果还有另一段数据也可以返回,那就更有意义了,例如看NSManagedObjectContext
- (BOOL)save:(NSError **)error
该方法的重要结果是YES
/ NO
保存,但我们还可以获取NSError
对象来检查是否存在错误。
答案 1 :(得分:0)
在Objective C中,“对象”是一个C指针,因此对象值实际上已经与结构引用相同(如果您希望代码在Objective C运行时之间可移植,则具有隐藏字段的不透明结构)。
所以没有“对抗”。
YouR的第一个例子是。
当算法需要引用引用或指针指针时,有一些特殊情况,但不常见。这将是你的第二个例子。