问题标签 [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 投票
2 回答
1709 浏览

objective-c - 堆栈跟踪中的 __forwarding__ 是什么意思?

目前我有一个罕见的错误,我还不知道原因。我不知道在哪里看,所以我想问的是前五行(#0 到 #4)是什么意思?我知道它声称有一些错误,但是像“ ___forwarding___”这样的东西是什么?

如果您对此有所了解,请提供帮助。非常感谢。

0 投票
2 回答
2224 浏览

objective-c - Objective C 中的消息转发

谁能简要说明如何使用消息转发?

链接

  • Apple 文档:Apple 文档往往可以作为参考,但足够长,不能作为最好的介绍。
0 投票
1 回答
137 浏览

objective-c - 转发课堂消息

我知道我可以使用-forwardInvocation:. 我可以对发送到类对象的消息执行相同的操作吗(如 中+forwardInvocation:)?

0 投票
1 回答
475 浏览

objective-c - 创建一个包含具有相同接口的另一个对象的 Objective-C 对象 - KVC/KVO 问题

我需要在一个类层次结构中创建一个对象,该对象包装来自不同对象的对象。它们都有非常相似的接口,我想自动让我的包装器将它无法识别的消息转发给它的目标,而不是实现它自己的属性。我用这样的东西让它工作:

但这不适用于键值编码。如何让我的包装器以使用其包装对象的属性的方式实现键值编码?

0 投票
1 回答
438 浏览

objective-c - 将实例变量的 setter/getter 传递给类

我正在创建一个 UIView 子类(我正在调用它MarqueeLabel),当 UILabel 文本对于包含视图而言太长时,它会以选取框方式为子视图 UILabel ivar 设置动画。

我希望有一个干净的实现,而不必在我的类中编写方法MarqueeLabel设置/检索 UILabel ivar 的所有标准 UILabel(文本、字体、颜色等)实例变量。我找到了一种通过消息转发来做到这一点的方法——所有发送到的无法识别的方法都被传递给 UILabel ivar。在我的情况下,无法识别的方法是通常与 UILabel 一起使用的方法。MarqueeLabelMarqueeLabel

但是这种方法存在一些问题:
1.您必须使用[marqueeLabel setText:@"Label here"],而不是marqueeLabel.text
2.编译器在上面的行中给出警告,因为:

“MarqueeLabel”可能不响应“-setText:”

我会知道忽略但会惹恼其他任何人。

为了避免这些问题,有没有办法将方法“提出”一个 ivar,以便使用类的东西可以访问它们,同时仍然作用于 ivar 对象?

谢谢!

注意:我设置的方式可能也不是最好的方式。也许子类化或类继续 UILabel 会更好,但我无法掌握如何使用这些方法完成动画 + 剪辑(当滚动的文本移出包含 UIView 并消失时)。

注2:我知道你可以使用子视图UILabelmarqueeLabel.subLabel.text在哪里。subLabel这可能是我采取的方向,但不妨看看是否有更好的解决方案!

0 投票
3 回答
539 浏览

iphone - iOS——使用宏转发一堆消息?

ForwardInvocation 确实存在,但它很慢并且有令人讨厌的编译器警告问题。所以这让我开始思考——有没有办法使用宏来快速实现一堆从另一个对象获取相关属性的 getter 方法?

例如,如果我有一个 Car 对象,它可能想要实现以下内容:

问题——是否可以设置一些宏,以便通过在某处进行更改,我可以在头文件和实现文件中添加另一种这样的方法?

例如 MagicForwardingMacro (nPistons, int, engine);

理想情况下,如果我以后想使用类似的策略从他或她的birthCertificate 中获取 Person 的 firstName、lastName、placeOfBirth 和 dateOfBirth 属性,那么宏将是可重用的。

0 投票
1 回答
920 浏览

objective-c - 我怎样才能通过消息转发“吞下”“无法识别的选择器错误”?

我只是在研究 Objective-C 的“消息转发”。我编写了一个测试程序来验证我是否可以在运行时“吞下”一个无法识别的选择器。所以我这样做了:

但它仍然在运行时抛出“无法识别的选择器”错误。搜索解决方案后,我知道我需要重写方法“methodSignatureForSelector:”,所以我编写了另一个名为“Proxy”的代理类和以下方法:

但是,实际上,我不想实现这样的另一个代理类来完成这个方法。我想做的就是忽略这个未知的选择器。但是如果我只是输入这个,它就不起作用:

所以,我想知道有什么方法可以简单地“吞下”这个错误?(不使用异常处理程序,我想要一种类似“转发”的方式)。谢谢!

0 投票
0 回答
183 浏览

ipad - iPad UISplitViewController 不转发 -prepareForSegue:sender 方法

我有一个 UISplitViewController 但我的委托类没有收到 -prepareForSegue:sender 消息。我已经确认是这种情况,因为我对 UISplitViewController 进行了子类化,并且它正在为它正在编排的每一个怪异的转场做准备。

有没有更好的方法来解决这个问题,除了子类化 UISplitViewController 只是为了转发一条消息......?

0 投票
0 回答
445 浏览

objective-c - 编译器警告和 -(void)forwardInvocation:(NSInvocation *)iInvocation

我有一个类,它主要将其方法实现委托给一个成员变量。

为了简化编写,我实现了

这使我的班级能够在没有大量样板代码的情况下实现一些协议。

它工作得很好,除了编译器对我没有实现的所有方法发出警告,这些方法实际上被转发到成员变量。我有没有办法告诉系统这些方法实际上已经实现,或者只为那个源关闭那些警告?

编译器发出 3 种警告:

  1. 协议中的方法未实现
  2. 属性 XXX 需要方法 XXX
  3. 待实施 实施不完全

在下面的代码中,我委托给的对象的类是ShareUser,实例是_user

0 投票
2 回答
1169 浏览

ios - 有没有办法观察对象(iOS)上调用的每个消息调用?

每次向对象发送消息时,我只想获取选择器名称以及参数、发送者或 NSInvocation 实例。可能的?像 forwardInvocation: 之类的东西,但在每种情况下(每个方法调用)。