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

iphone - NSInvocation 抛出异常

我正在尝试使用 NSTimer 进行调用,但我在两件事上遇到了问题。我不知道如何让 Selector 传递 Arguments(Xcode crys) 或如何让它正常工作,因为它总是崩溃。

但我没有让它工作(运行时例外)有人知道有什么问题吗?

0 投票
1 回答
324 浏览

ios - NSInvocation 是否应该将 self 作为 2d 索引参数传递?

我正在使用 cocos2d 进行开发。我试图包装一个自定义的按钮类。当试图让按钮响应我分配给它的选择器时,我使用了 NSInvocation。在其中,MyButton 是这样工作的。

我已经向 sel 传递了一个这样的函数:

我的问题是:是否有必要[invocation_ setArgument:&self atIndex:2];在 MyButton 的实现中添加这一行?

我有这个问题是因为根据这里的 ios 文档: NSInvocation Class Reference

它指出:

索引 0 和 1 分别表示隐藏参数 self 和 _cmd;您应该直接使用 setTarget: 和 setSelector: 方法设置这些值。对通常在消息中传递的参数使用索引 2 和更大。

调用setTarget时好像传了self,是不是说setArgument方法中不需要传入&self参数?

谢谢

0 投票
3 回答
3642 浏览

objective-c - NSInvocation getReturnValue: 内部调用 forwardInvocation: 使返回的对象调用 dealloc:

test.m这是我用来测试行为的独立文件。

编译:clang test.m -o test.app -fobjc-arc -ObjC -framework Foundation. 确保安装了 Xcode 命令行工具。

如果我注释掉[invocation getReturnValue:&result];,返回的对象不会被dealloc吃掉。我不知道这是否是一个错误,或者只是我误解了它的NSInvocation工作原理。

0 投票
4 回答
398 浏览

iphone - 从 NSInvocation 或 NSNotificationCentre 或 Delegate 方法中使用哪一个更好

在整个项目中,哪一个更适合用于将数据从一个类流向另一个类?

NSInvocation

NSNotificationCentre

delegate方法

或通过我不知道的任何其他方法?

0 投票
1 回答
1757 浏览

automatic-ref-counting - ARC [rewriter] NSInvocation 的 setArgument 不能安全地与拥有 __unsafe_unretained 之外的所有权的对象一起使用

我一直在将我的项目转换为 ARC,但我遇到了这个错误。

&object,&invocation 和 &callerToRetain 向我显示错误“[rewriter] NSInvocation 的 setArgument 不能安全地用于拥有除 __unsafe_unretained 之外的所有权的对象”

请帮帮我。

0 投票
0 回答
320 浏览

button - cocos2d 的自定义按钮

我正在创建我的自定义“按钮”类...我没有使用 CCMenuItems,因为我的按钮需要一些灵活性。

我的实现如下:

创建时,按钮接收一个targetand selector,并构建一个NSInvocation. 当被触摸时,调用被调用。我将主要使用此按钮从一层转到另一层。

问题是当从一个层到下一个层,然后再回到上一个层时,会发生一些奇怪的事情:要么没有精灵加载到下一个视图中,要么抛出了 EXC_BAD_ACCESS 错误。

谁能帮我这个?

谢谢!

PS:我的理论是它与 NSInvocation 和“dealloc”方法有关。

难道我做错了什么?

0 投票
1 回答
406 浏览

ios - 获取从 NSInvocationOperation 返回的结果

返回调用或方法的结果。- (id)result 返回值 方法返回的对象,如果不是对象,则返回包含返回值的 NSValue 对象。如果方法或调用未完成执行,则此方法返回 nil。

我总是得到nil图像。上面的代码有什么问题?

0 投票
2 回答
451 浏览

ios - NSInvocationOperation 回调太快

我知道类似的问题已经被问过几次,但我很难弄清楚如何解决这个特定的问题。到目前为止,我所做的一切都是在主踏板上进行的。我现在发现我需要执行一个需要一些时间的操作,并且我想在操作期间在我的显示器上添加一个 HUD,并在操作完成后将其淡出。

在阅读了很多关于 GCD 的内容(并且变得很困惑)之后,我决定最简单的方法是使用 NSInvocationOperation 调用我的耗时方法并将其添加到新创建的 NSOperationQueue 中。这就是我所拥有的:

我希望这会显示 HUD,开始在地图上绘制点,然后一旦该操作完成,淡出 HUD。

相反,它会显示 HUD,开始在地图上绘制点,然后在绘制点的同时淡出 HUD。根据我的 NSLogs,在调用该方法以淡化 HUD 之前大约有四分之一秒的延迟。与此同时,点的绘制又持续了几秒钟。

我该怎么做才能让它等到地图上的绘图完成后再消失 HUD?

谢谢

编辑添加:

进行以下更改后,我几乎取得了成功:

奇怪的是,好像是先调用timeConsumingOperation,再调用showLoadingConfirmation,再调用fadeConfirmation。这是根据我在这些方法中触发的 NSLogs 得出的。

我在屏幕上看到的行为是这样的:绘制点并且地图相应地调整它的缩放(部分时间ConsumingOperation),然后HUD出现在屏幕上,然后什么都没有。所有三个 NSLog 都会立即出现,即使 showLoadingConfirmation 在 timeConsumingOperation 完成之前不会发生,并且 fadeConfirmation 似乎根本没有发生。

这看起来很奇怪,但也似乎暗示有一种方法可以在 timeConsumingOperation 完成时使某些事情发生。

我试着添加这个:

还有这个:

但它们似乎没有任何区别。

0 投票
1 回答
135 浏览

xcode - NSInvocation 问题

因此,当我尝试从文件加载信息时遇到了一些问题。

这是给我 NSinvocation 问题的行

* NSInvocation: 警告: 类 'myClass' 的对象 0xf9f500 没有实现 methodSignatureForSelector: -- 前面的麻烦

* NSInvocation: 警告: 类 'myClass' 的对象 0xf9f500 没有实现 doesNotRecognizeSelector: -- 中止

我查看了其他问题和其他站点以尝试找到答案。myClass 确实继承自 NSObject,而我的客户视图控制器继承自 UIViewController。我的客户视图控制器实现了上面的代码。我从中加载的保存文件确实存在。不知道我需要为此做什么,任何帮助将不胜感激,谢谢!

0 投票
2 回答
1591 浏览

objective-c - NSInvocation setArgument 问题

我需要使用 NSInvocation 动态调用方法。这是我尝试过的:

需要提一下,messageRecord.senderController是调用哪个方法的对象,messageRecord.receiverAction是赋予这段代码的选择器。此外,message.data是一个类型为 (NSArray *) 的对象并已正确初始化。

这段代码给出了以下编译时错误

当我如下更改调用过程时,它按预期工作:

两者之间的唯一区别是:我创建了一个本地 NSArray 指针并将 message.data 分配给它。后来,给出了新创建的指针的地址而不是message.data它本身。

为什么它起作用了?有什么区别呢?