问题标签 [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.
objective-c - 堆栈跟踪中的 __forwarding__ 是什么意思?
目前我有一个罕见的错误,我还不知道原因。我不知道在哪里看,所以我想问的是前五行(#0 到 #4)是什么意思?我知道它声称有一些错误,但是像“ ___forwarding___
”这样的东西是什么?
如果您对此有所了解,请提供帮助。非常感谢。
objective-c - 转发课堂消息
我知道我可以使用-forwardInvocation:
. 我可以对发送到类对象的消息执行相同的操作吗(如 中+forwardInvocation:
)?
objective-c - 创建一个包含具有相同接口的另一个对象的 Objective-C 对象 - KVC/KVO 问题
我需要在一个类层次结构中创建一个对象,该对象包装来自不同对象的对象。它们都有非常相似的接口,我想自动让我的包装器将它无法识别的消息转发给它的目标,而不是实现它自己的属性。我用这样的东西让它工作:
但这不适用于键值编码。如何让我的包装器以使用其包装对象的属性的方式实现键值编码?
objective-c - 将实例变量的 setter/getter 传递给类
我正在创建一个 UIView 子类(我正在调用它MarqueeLabel
),当 UILabel 文本对于包含视图而言太长时,它会以选取框方式为子视图 UILabel ivar 设置动画。
我希望有一个干净的实现,而不必在我的类中编写方法来MarqueeLabel
设置/检索 UILabel ivar 的所有标准 UILabel(文本、字体、颜色等)实例变量。我找到了一种通过消息转发来做到这一点的方法——所有发送到的无法识别的方法都被传递给 UILabel ivar。在我的情况下,无法识别的方法是通常与 UILabel 一起使用的方法。MarqueeLabel
MarqueeLabel
但是这种方法存在一些问题:
1.您必须使用[marqueeLabel setText:@"Label here"]
,而不是marqueeLabel.text
2.编译器在上面的行中给出警告,因为:
“MarqueeLabel”可能不响应“-setText:”
我会知道忽略但会惹恼其他任何人。
为了避免这些问题,有没有办法将方法“提出”一个 ivar,以便使用类的东西可以访问它们,同时仍然作用于 ivar 对象?
谢谢!
注意:我设置的方式可能也不是最好的方式。也许子类化或类继续 UILabel 会更好,但我无法掌握如何使用这些方法完成动画 + 剪辑(当滚动的文本移出包含 UIView 并消失时)。
注2:我知道你可以使用子视图UILabelmarqueeLabel.subLabel.text
在哪里。subLabel
这可能是我采取的方向,但不妨看看是否有更好的解决方案!
iphone - iOS——使用宏转发一堆消息?
ForwardInvocation 确实存在,但它很慢并且有令人讨厌的编译器警告问题。所以这让我开始思考——有没有办法使用宏来快速实现一堆从另一个对象获取相关属性的 getter 方法?
例如,如果我有一个 Car 对象,它可能想要实现以下内容:
问题——是否可以设置一些宏,以便通过在某处进行更改,我可以在头文件和实现文件中添加另一种这样的方法?
例如 MagicForwardingMacro (nPistons, int, engine);
理想情况下,如果我以后想使用类似的策略从他或她的birthCertificate 中获取 Person 的 firstName、lastName、placeOfBirth 和 dateOfBirth 属性,那么宏将是可重用的。
objective-c - 我怎样才能通过消息转发“吞下”“无法识别的选择器错误”?
我只是在研究 Objective-C 的“消息转发”。我编写了一个测试程序来验证我是否可以在运行时“吞下”一个无法识别的选择器。所以我这样做了:
但它仍然在运行时抛出“无法识别的选择器”错误。搜索解决方案后,我知道我需要重写方法“methodSignatureForSelector:”,所以我编写了另一个名为“Proxy”的代理类和以下方法:
但是,实际上,我不想实现这样的另一个代理类来完成这个方法。我想做的就是忽略这个未知的选择器。但是如果我只是输入这个,它就不起作用:
所以,我想知道有什么方法可以简单地“吞下”这个错误?(不使用异常处理程序,我想要一种类似“转发”的方式)。谢谢!
ipad - iPad UISplitViewController 不转发 -prepareForSegue:sender 方法
我有一个 UISplitViewController 但我的委托类没有收到 -prepareForSegue:sender 消息。我已经确认是这种情况,因为我对 UISplitViewController 进行了子类化,并且它正在为它正在编排的每一个怪异的转场做准备。
有没有更好的方法来解决这个问题,除了子类化 UISplitViewController 只是为了转发一条消息......?
objective-c - 编译器警告和 -(void)forwardInvocation:(NSInvocation *)iInvocation
我有一个类,它主要将其方法实现委托给一个成员变量。
为了简化编写,我实现了
和
这使我的班级能够在没有大量样板代码的情况下实现一些协议。
它工作得很好,除了编译器对我没有实现的所有方法发出警告,这些方法实际上被转发到成员变量。我有没有办法告诉系统这些方法实际上已经实现,或者只为那个源关闭那些警告?
编译器发出 3 种警告:
- 协议中的方法未实现
- 属性 XXX 需要方法 XXX
- 待实施 实施不完全
在下面的代码中,我委托给的对象的类是ShareUser
,实例是_user
ios - 有没有办法观察对象(iOS)上调用的每个消息调用?
每次向对象发送消息时,我只想获取选择器名称以及参数、发送者或 NSInvocation 实例。可能的?像 forwardInvocation: 之类的东西,但在每种情况下(每个方法调用)。