我正在使用方法调配将所有方法调用包装在一个具有一些额外功能的类中。具体来说我是:
我想看看使用NSProxy是否提供了更具可读性的代码,另外认为NSProxy可以轻松地使用未知数量的参数重定向方法调用。
因此,除了一个重要的捕获之外,NSProxy版本工作正常。我的子类上的任何内部调用都不通过代理。
以下是我创建替身拦截器的方法:
- (id)init
{
self = [super init];
if (self)
{
TyphoonAssemblyProxy* proxy = [[TyphoonAssemblyProxy alloc] initWithAssembly:self];
self = proxy; // 'self' should now be the proxy. . . but it seems not :(
}
return self;
}
内部调用(即在代理类中调用'self')不会通过代理路由:
现在,在我的代理类的子类中,我有代码希望内部调用通过代理。但他们没有。
- (id)knight
{
return [TyphoonDefinition withClass:[Knight class] properties:^(TyphoonDefinition* definition)
{
//THIS NEXT CALL TO [self defaultQuest] SHOULD GO THROUGH PROXY MACHINERY!
[definition injectProperty:@selector(quest) withDefinition:[self defaultQuest]];
[definition injectProperty:@selector(damselsRescued) withValueAsText:@"12"];
[definition setScope:TyphoonScopeDefault];
}];
}
问题:
通过代理获取这些内部的简单方法是什么?
答案 0 :(得分:1)