问题标签 [nsinvocation]

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 投票
7 回答
1849 浏览

objective-c - 使 NSInvocation 调用特定的 IMP

我正在寻找一种方法来NSInvocation调用特定的IMP. 默认情况下,它调用IMP它可以找到的“最低”版本(即最近被覆盖的版本),但我正在寻找一种方法来让它调用IMP继承链中更高的一个。我想调用的IMP是动态确定的,否则我可以使用super关键字或类似的东西。

我的想法是使用该-forwardInvocation:机制来捕获消息(简单且已经工作),然后更改IMP它,使其转到既不是super实现也不是最远后代实现的方法。(难的)

我发现唯一可以远程关闭的是AspectObjectiveC,但这需要 libffi,这使得它与 iOS 不兼容。理想情况下,我希望这是跨平台的。

有任何想法吗?

免责声明:我只是在尝试


尝试@bbum 的蹦床功能想法

所以我认为我已经完成了大部分工作;我有以下通过 正确添加的蹦床class_addMethod(),并且确实输入了:

我已经验证了正确的 self 和正确的 IMP 在 JMP 之前都是正确的,并且_cmd参数也正确输入。(换句话说,我正确地添加了这个方法)。

然而,事情正在发生。我有时会发现自己跳到一个方法(通常不是正确的方法)与一个 nilself_cmd. 其他时候,我会用 EXC_BAD_ACCESS 在不知名的地方崩溃。想法?(自从我在汇编中做任何事情以来已经很长时间了......)我正在 x86_64 上测试它。

0 投票
1 回答
563 浏览

iphone - NS调用;变量不是 CFString

我正在使用 NSInvocation 进行动态调用:

在调试器中,所有三个对象变量都正确指向三个不同的 NSCFString*。调用完成,另一方面,到达了正确的方法。

但是,在调试器中,它的参数给出错误:“变量不是 CFString”。更糟; 所有三个变量都指向同一个内存位置。

怎么会这样?

0 投票
3 回答
11113 浏览

objective-c - 如何将参数传递给在 NSTimer 中调用的方法

我有一个计时器调用一个方法,但这个方法需要一个参数:

应该

现在这种语法似乎不正确。我尝试使用 NSInvocation 但遇到了一些问题:

我应该如何使用调用?

0 投票
1 回答
1177 浏览

objective-c - 如何从 NSInvocation 获得 NSString 结果?

以下代码按预期工作:

但是当我用 替换它时NSInvocation,我得到了完全不同的结果:

我已经搜索了高低,但无法弄清楚这一点。有什么帮助吗?谢谢!

0 投票
1 回答
1308 浏览

iphone - 带有返回值的 NSInvocationOperation (BOOL)

嗨我有这些调用操作:

我的方法:

应该扔回 bool....

我怎样才能抓住这个价值?

问候

0 投票
1 回答
2983 浏览

objective-c - 在 OCMock 中使用块期望

我正在使用 GHUnit 和 OCMock 在我的 iOS 应用程序中进行一些测试工作。

所以我在整合它们时遇到了一些麻烦。

以下代码运行良好。

但是当我改变 [[[mock stub] andReturn:@"255"] capitalizedString]; 进入

我收到一条错误消息,上面写着“原因:'NSCFString' 应该等于 '255'。应该等于”

我认为这两个语句应该做完全相同的事情。我错了吗?

0 投票
2 回答
368 浏览

objective-c - 如何编码 NSInvocation?

我可以通过添加一类<NSCoding>方法来解决这个问题吗?

0 投票
3 回答
744 浏览

objective-c - NSInvocation 类上的 setSelector 方法的目的是什么?

我不明白为什么当信息已经setSelector通过.NSInvocationinvocationWithMethodSignature

要创建NSInvocation对象,我们执行以下操作:

请注意,我们将选择器传递给[SomeObject instanceMethodSignatureForSelector: someSelector];并再次传递给[invocation setSelector:someSelector];.

有什么我想念的吗?

0 投票
2 回答
1692 浏览

iphone - 如何正确释放 NSInvocation 的保留参数?

释放 NSInvocation 时是否释放了保留的参数,或者我是否需要手动释放 NSInvocation 参数列表中的对象?

0 投票
1 回答
426 浏览

iphone - 在 iOS 中传递委托

我正在开发一个包含搜索表单的 iOS 应用程序。当用户单击搜索时,我想使用 NSInvocationOperation (这很好)来生成另一个线程。在这个线程上,我将调用我的数据层(一个单独的类)来从 Web 服务中检索数据。有什么方法可以在我的 ViewController 子类中向数据层传递一个方法,该方法应该在完成时执行,以及其他参数(搜索词等)?有点像 .NET 的 BackgroundWorker?