问题标签 [message-forwarding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
222 浏览

objective-c - 根据平台定义使用不同类的类

我希望能够有两个类负责以不同的方式响应选择器,具体取决于平台是 iOS 还是 OSX。

但是,我想要只使用一个类的代码,并且我想避免重复#ifdefs。

理想情况下,我希望有 3 个课程:

  • 通用类
  • iOS 特定类
  • OSXSpecificClass

iOSSpecificClass并且OSXSpecificClass都扩展了 UniversalClass。所有调用都将在 UniversalClass 上完成,该类负责调用 和 的相应iOSSpecificClass方法OSXSpecificClass

我想出了两个解决方案:

这种方法的问题是UniversalClass在 .h 中承诺了可以或不能交付的东西。警告也告诉我们这一点。Grr。警告。

第二种方法是这样的:

这种方法的问题是我必须对我添加的每个方法进行更改,我觉得我有点重复自己而不需要。

在这两种解决方案中我必须注意哪些边缘情况?还有比这些更好的解决方案吗?

0 投票
0 回答
212 浏览

ios - iOS 消息转发 - 协商一个 C​​LASS 方法并转发

我想知道是否可以将类方法转发到不同的实例。我查看了文档,其中显示的所有方法都是实例级方法。那么有没有办法可以协商和转发一个类或静态方法?

只是为了获得更多信息,我的愿景是[ASingleton sharedInstance] somemethod]我希望直接调用someMethod而不是做ASingleton

0 投票
1 回答
271 浏览

ios - 使用 ARC 从 NSInvocation 获取对象数组参数

我有一个具有以下签名的方法:

我有几个问题:

1. 如何在这个方法中使用 NSInvocation 检索参数?

我尝试了以下但我没有得到正确的值:

我可以有一个包含 n 个 int 对象的数组,所以我不应该硬编码 2. 如何在运行时确定对象数组的大小?我是否需要数组中的哨兵值来确定边界?

2. __strong 限定符对输入参数和块参数都正确吗?请注意,该块是异步的,将在稍后执行。

0 投票
2 回答
1365 浏览

ios - iOS 消息转发方法SignatureForSelector

因此,当我遇到一些资源匮乏的情况时,我正在研究消息转发forwardInvocation:并运行一些单元测试,包括苹果自己品牌的使用文档,据我所知需要methodSignatureForSelector:工作。

methodSignatureForSelector:现在我得到了查看您尝试将消息转发到的对象是否具有匹配的方法名称和参数所需的一般概念,因此它可以调用forwardInvocation:我的问题是为什么在苹果文档中它说调用超类的methodSignatureForSelector:实现所以...

对我来说,这看起来像是在说“如果我继承的所有类都没有处理这个方法的方法,请检查代理对象是否有。”

在谈判方法方面,苹果给出的例子是勇士代替外交官行事。鉴于这个例子,我不明白你为什么要检查战士或其任何父母是否有适当的方法签名来转发。所以这让我相信它的存在是出于另一个原因,一个我想不出的原因,有人可以给我一个例子或帮助澄清我可能遗漏的地方吗?

TL;DR 为什么我需要[super methodSignatureForSelector:selector];

0 投票
1 回答
424 浏览

activemq - 在两个 ActiveMQ 代理之间转发消息时保持消息的顺序

我有一个 ActiveMQ 设置,其中位于一个数据中心的源代理将到达某些主题的所有消息转发到另一个数据中心的目标代理。消费者应用程序仅使用来自目标代理的消息。(这个设置主要是为了保证两个数据中心之间消息的快速高效转发。)

转发配置如下所示:

我们的应用程序需要维护消息顺序。但是,当目标代理出现故障时,我们会丢失消息。到达源代理的消息在主题中堆积,但在重新建立与目标代理的连接时不会被转发。但是,重新连接后到达的消息将照常转发。

我正在寻找一种可以配置设置的方法,以便:

  • 重新连接目的地后,立即发送在源处等待的所有消息,保持正确的顺序,
  • 重新连接后到达的消息在转发之前等待较旧的消息被转发。
0 投票
2 回答
104 浏览

ios - 我有一个类我想要一些方法转移到一个数组的对象

就像标题说的:我有一个 ObjcClass 我想要一些东西可以被重用,因为这个类可能有 -(void)test1:xxx -(void)test2:xxx argu:yyy 我不想那样做

例子:

像这样,UIApplicationDelegate 有很多方法,我不想写 [obj application:application didFinishLaunchingWithOptions:launchOptions]; [obj applicationWillResignActive:application]; 在每个方法中,相反我希望像[obj respondsToSelector:_cmd]这样的方法,我可以提出像[obj invokeWithMethod:_cmd arguments:_VA_LIST] 这样的通用方法; 这些方法是否可以优化,因为它们对不同的方法做同样的事情

0 投票
0 回答
62 浏览

objective-c - 转发 ObjC 方法时获取真正的响应者

我遇到了一个UITableView/UICollectionView委托被代理对象(不是一个NSProxy,只是一个常规对象)转发的情况。

根据具体的委托方法,代理会将其转发给实际响应该方法的 2 个对象之一。

给定一个委托回调,我想知道响应方法调用的“真实”实例。

代理代码如下所示:

我的代码如下所示:

给定一个委托方法,我想知道哪个实例正在响应:

编辑:

当前的 hack 到位(想要更全面的东西):

使转发器在模拟对象上调用并获取目标对象

0 投票
1 回答
72 浏览

ios - 消息转发不起作用(Objective-C)

我正在编写示例代码以了解 Objective C (iOS) 中的消息转发。

我有两个班(A班和B班)。我想创建一个 B 类的实例并为其设置一个 A 类实例变量。我在下面的代码中调用了转发调用方法(消息转发)。

我期待上面的代码能够工作。但相反,我收到以下构建时间错误:

ARC 语义问题 TestInvocation.m:19:35:“ClassB”没有可见的@interface 声明选择器“值”

0 投票
2 回答
595 浏览

rest - 转发来自 Kafka 主题的消息

我正在设计一个系统,它就像从一个系统到另一个系统的消息转发器。我有几个选择,但我想应用提供更少资源消耗(cpu、ram)和延迟的最佳选项。因此,我需要您的建议和对此的看法。我们假设消息将从 Kafka 中的主题流式传输到我们的系统。我们需要将主题中的所有消息转发到另一台主机。为此目的可以有不同的策略。

  1. 收集一定数量的消息,比如说 100 条消息(批处理)并在单个 HTTP 消息中一次发送它们。
  2. 当收到一条消息时,系统会将此消息作为 http POST 请求发送到目标主机。
  3. 在我们的系统和目标主机之间打开 webSocket 并发送消息。
  4. 表现得像 Kafka 生产者并向主题发送消息。

他们每个人都可能有优点和缺点。我担心系统可能无法处理大量消息。除了这4个项目,你还有其他选择吗?就什么而言,您认为哪个是最佳选择?