gpt4 book ai didi

cocoa - 使用 NSProxy 和forwardInitation :

转载 作者:行者123 更新时间:2023-12-03 16:11:32 25 4
gpt4 key购买 nike

我想编写一个代理,通过 TCP 将方法调用转发到另一个对象,而无需 NSConnectionNSDistanceObject 内容。我想要的是我自己的协议(protocol)。

问题在于,子类化 NSProxy 并重写 forwardInitation: 是不够的。我还必须重写 methodSignatureForSelector

这是我的问题:

– (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
{
return ???
}

最佳答案

@Brian,这可能没问题,但 setProtocolForProxy: 只是为了优化。 cocoafan 可以在他的解决方案中强制使用它,但它不会是一个直接的替代品。您应该能够自动获得签名。为此,网络协议(protocol)需要一种请求签名的方法。

我相信这里的解决方案是在网络协议(protocol)中包含一个“请求方法签名”方法,并让它在远程对象上运行 methodSignatureForSelector: 并编码并返回结果。这就是 NSDistantObject 的作用。

如果您要经常喋喋不休,那么提供 setProtocolForProxy: 是一项重要的优化,但它确实将您限制为您拥有协议(protocol)的对象,并且在 10.5 之前引入了一些烦人的限制(所有方法都是必需的)。即使在 10.5 上,如果它是获取方法签名的唯一方法,也可能会引入一些有问题的限制。

@cocoafan,我认为您在 NSProxy 之上从头开始创建它可能是正确的,但请查看 NSConnection 并看看您是否可以子-对其进行分类以按照您想要的方式管理网络连接。如果您能找到一种方法来做到这一点(尽管我没有立即看到一种简单的方法),您可能会从 NSDistantObject 中免费获得很多东西。

关于cocoa - 使用 NSProxy 和forwardInitation :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com