1

有时我需要在 ObjC中实现代理模式。如果我在运行时创建内部 主题并且不想将创建逻辑从代理中移出,我需要它。有时我在代理中使用几个对象,我也更喜欢使用 ARC 来内存管理。现在我使用 C++ 风格实现它:

- (void)setProperty:(CGFloat)value
{
    _innerObject.value = value;
}


- (CGFloat)property
{
    return _innerObject.value;
}

<...> 

我认为这不是最好的方法,我认为存在更简单的方法。我想使用 ObjC 运行时并自动转发消息。
如果不手动编写每个 set/get 方法,我怎么能做到这一点?

4

1 回答 1

0

- forwardingTargetForSelector:“[r] 返回应首先将无法识别的消息定向到的对象”。所以:

// Will be queried for every message that is sent to `self` but
// which `self` does not itself implement.
- (id)forwardingTargetForSelector:(SEL)selector
{
    return _innerObject;
}
于 2016-05-17T12:59:10.330 回答