在Objective-C中,应该将包装属性设置为弱吗?

时间:2014-03-11 19:44:41

标签: objective-c properties

在Objective-C中,应该将包装属性设置为弱吗?通过包装器属性,我的意思是该属性是另一个属性的包装器。

e.g。

- (Prop *)prop {
  return self.obj.prop;  //wrapper method for another property
}

@property (nonatomic, readonly, weak) Prop *prop; // weak or strong?

2 个答案:

答案 0 :(得分:2)

"正确"在这种情况下是一个约定和偏好的问题,因为Objective-C属性确实支持这种模式。访问属性会调用生成,合成或手动编码的方法。

我不会忘记它是否正确"或不。

由于您的属性只返回不同属性的值,因此您不需要指定强或弱,因为它们毫无意义。

在公共标题中:

# myclass.h

@interface MyClass
@property (nonatomic, readonly) OtherClass *someProperty;
@end

在实施中:

# myclass.m

@implementation MyClass

- (OtherClass *)someProperty
{
    return self.someObject.otherProperty;
}

答案 1 :(得分:0)

使用房产不一定是最好的方式。它不应该是弱或强,因为它永远不会被设置。您永远不会创建一个readwrite对应项并生成实例变量/访问器方法。

因此,最好将此表示为头文件中的简单方法。它作为所提供界面的描述更准确。