如何在Objective-c中实现代理模式(使用运行时和其他objc功能)

时间:2016-05-17 12:22:36

标签: objective-c proxy-pattern

有时候我需要在ObjC中实现proxy pattern。如果我在运行时创建内部 主题并且不希望从代理中移出创建逻辑,我需要它。有时我在代理中使用几个对象,我更喜欢使用ARC来记忆内容。现在我使用C ++样式实现它:

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


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

<...> 

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

1 个答案:

答案 0 :(得分:0)

- forwardingTargetForSelector:“[r] eturns应首先指向无法识别的消息的对象”。所以:

// Will be queried for every message that is sent to `self` but
// which `self` does not itself implement.
- (id)forwardingTargetForSelector:(SEL)selector
{
    return _innerObject;
}