问题标签 [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.
iphone - NSInvocation 抛出异常
我正在尝试使用 NSTimer 进行调用,但我在两件事上遇到了问题。我不知道如何让 Selector 传递 Arguments(Xcode crys) 或如何让它正常工作,因为它总是崩溃。
但我没有让它工作(运行时例外)有人知道有什么问题吗?
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参数?
谢谢
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
工作原理。
iphone - 从 NSInvocation 或 NSNotificationCentre 或 Delegate 方法中使用哪一个更好
在整个项目中,哪一个更适合用于将数据从一个类流向另一个类?
NSInvocation
NSNotificationCentre
delegate
方法
或通过我不知道的任何其他方法?
automatic-ref-counting - ARC [rewriter] NSInvocation 的 setArgument 不能安全地与拥有 __unsafe_unretained 之外的所有权的对象一起使用
我一直在将我的项目转换为 ARC,但我遇到了这个错误。
&object,&invocation 和 &callerToRetain 向我显示错误“[rewriter] NSInvocation 的 setArgument 不能安全地用于拥有除 __unsafe_unretained 之外的所有权的对象”
请帮帮我。
button - cocos2d 的自定义按钮
我正在创建我的自定义“按钮”类...我没有使用 CCMenuItems,因为我的按钮需要一些灵活性。
我的实现如下:
创建时,按钮接收一个target
and selector
,并构建一个NSInvocation
. 当被触摸时,调用被调用。我将主要使用此按钮从一层转到另一层。
问题是当从一个层到下一个层,然后再回到上一个层时,会发生一些奇怪的事情:要么没有精灵加载到下一个视图中,要么抛出了 EXC_BAD_ACCESS 错误。
谁能帮我这个?
谢谢!
PS:我的理论是它与 NSInvocation 和“dealloc”方法有关。
难道我做错了什么?
ios - 获取从 NSInvocationOperation 返回的结果
返回调用或方法的结果。- (id)result 返回值 方法返回的对象,如果不是对象,则返回包含返回值的 NSValue 对象。如果方法或调用未完成执行,则此方法返回 nil。
我总是得到nil
图像。上面的代码有什么问题?
ios - NSInvocationOperation 回调太快
我知道类似的问题已经被问过几次,但我很难弄清楚如何解决这个特定的问题。到目前为止,我所做的一切都是在主踏板上进行的。我现在发现我需要执行一个需要一些时间的操作,并且我想在操作期间在我的显示器上添加一个 HUD,并在操作完成后将其淡出。
在阅读了很多关于 GCD 的内容(并且变得很困惑)之后,我决定最简单的方法是使用 NSInvocationOperation 调用我的耗时方法并将其添加到新创建的 NSOperationQueue 中。这就是我所拥有的:
我希望这会显示 HUD,开始在地图上绘制点,然后一旦该操作完成,淡出 HUD。
相反,它会显示 HUD,开始在地图上绘制点,然后在绘制点的同时淡出 HUD。根据我的 NSLogs,在调用该方法以淡化 HUD 之前大约有四分之一秒的延迟。与此同时,点的绘制又持续了几秒钟。
我该怎么做才能让它等到地图上的绘图完成后再消失 HUD?
谢谢
编辑添加:
进行以下更改后,我几乎取得了成功:
奇怪的是,好像是先调用timeConsumingOperation,再调用showLoadingConfirmation,再调用fadeConfirmation。这是根据我在这些方法中触发的 NSLogs 得出的。
我在屏幕上看到的行为是这样的:绘制点并且地图相应地调整它的缩放(部分时间ConsumingOperation),然后HUD出现在屏幕上,然后什么都没有。所有三个 NSLog 都会立即出现,即使 showLoadingConfirmation 在 timeConsumingOperation 完成之前不会发生,并且 fadeConfirmation 似乎根本没有发生。
这看起来很奇怪,但也似乎暗示有一种方法可以在 timeConsumingOperation 完成时使某些事情发生。
我试着添加这个:
还有这个:
但它们似乎没有任何区别。
xcode - NSInvocation 问题
因此,当我尝试从文件加载信息时遇到了一些问题。
这是给我 NSinvocation 问题的行
* NSInvocation: 警告: 类 'myClass' 的对象 0xf9f500 没有实现 methodSignatureForSelector: -- 前面的麻烦
* NSInvocation: 警告: 类 'myClass' 的对象 0xf9f500 没有实现 doesNotRecognizeSelector: -- 中止
我查看了其他问题和其他站点以尝试找到答案。myClass 确实继承自 NSObject,而我的客户视图控制器继承自 UIViewController。我的客户视图控制器实现了上面的代码。我从中加载的保存文件确实存在。不知道我需要为此做什么,任何帮助将不胜感激,谢谢!
objective-c - NSInvocation setArgument 问题
我需要使用 NSInvocation 动态调用方法。这是我尝试过的:
需要提一下,messageRecord.senderController
是调用哪个方法的对象,messageRecord.receiverAction
是赋予这段代码的选择器。此外,message.data
是一个类型为 (NSArray *) 的对象并已正确初始化。
这段代码给出了以下编译时错误
当我如下更改调用过程时,它按预期工作:
两者之间的唯一区别是:我创建了一个本地 NSArray 指针并将 message.data 分配给它。后来,给出了新创建的指针的地址而不是message.data
它本身。
为什么它起作用了?有什么区别呢?