问题标签 [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.
nsinvocation - 如何使用 NSInvocations 传递完成块?
我有一个应用程序向我的服务器发出签名请求。所有请求都需要身份验证令牌。每当我发出请求时,如果未找到身份验证令牌,我会使用 NSInvocation 存储该请求,查询身份验证令牌,调用我的调用,然后返回带有完成块的原始调用方法。
我的问题是,如何正确地将返回块传递给 NSInvocation?我没有错误,但由于某种原因,[someClass listFilesWithCompletionBlock] 的完成块的原始调用者永远不会触发。
objective-c - 基于索引的 Objective-C 参数值的获取
我想用正确的参数值为NSInvocation
当前方法动态创建。通常,人们可能会这样做:
显式设置参数值很简单,我们可以这样做:
我希望能够通过以下方式循环执行此操作:
困难的部分是动态获取给定索引的参数值。
这里问了一个类似的问题,回答者说他不知道引用类复杂性的解决方案。我不同意复杂性 - 在底层代码中,我们已经确切地知道堆栈在设置堆栈框架后应该如何看待,因为编译器知道使用的调用约定。例如,在 x86 上,stdcall
我们可以轻松访问参数值,因为我们知道它们是固定偏移量ebp
:
- 旧
ebp
于0(%ebp) - 返回地址为4(%ebp)
- 第一个参数在8(%ebp)
- 等等
我怎样才能实现我想要的,或者语言中真的不存在任何机制来支持基于索引的参数值获取?在这一点上,我可以接受这是真的,因为 C 标准中不存在这样的特性。但是,我想得到确认和/或解释这背后的原因。
ios - 定义没有基类的 Objective-C 类 - 编译器警告
我正在使用Matt GallagherNSInvocation
的以下代码作为我的撤消/重做代码。虽然使用最新版本的 xCode 我没有收到警告说:NSInvocation(ForwardedConstruction).m:28:12: Class 'InvocationProxy' defined without specified a base class
代码运行良好,但我团队中的其他人(我也是)不喜欢看到警告。我希望类尽可能精简,所以我不希望 NSObject 中的所有方法。
欢迎任何建议!
谢谢!
NSInvocation(ForwardedConstruction).h
NSInvocation(ForwardedConstruction).m
objective-c - NSInvocation setArgument 不适用于简单的 int32_t
在将 NSInvocation 与不是对象的参数一起使用时,我遇到了一个问题。我传递的简单整数值被更改为不同的值。
这是我正在调用的方法:
这就是我所说的:
结果是记录的不是我传递的简单的 123456 值,而是这样的:
** * ***180774176** * ** * ***
我做错了什么?
我对 Objective C 很陌生,但是我需要在运行时调用一个我无法控制的方法。它以 int64_t 作为参数类型。
请问有人可以帮忙吗?谢谢....
objective-c - forwardInvocation: 如何被调用?
只看 Objective-C 运行时库,当一个消息被发送到一个不响应它的对象时,运行时系统给了接收者另一个机会来处理这个消息。因此,接收者的forward::
方法(如果已实现)将被调用。但是,查看NSObject.mm,NSObject
似乎没有实现forward::
。
那么,如何调用NSObject
'sforwardInvocation:
方法,因为运行时系统在需要转发时唯一调用的是forward::
?Foundation 是否使用objc_setForwardHandler
( runtime.h ) 设置一个新的处理程序,该处理程序在需要转发forwardInvocation:
发送到对象的消息时调用?NSObject
ios - @selector 的多个参数
我正在目标 C 中创建一个游戏,但我被一个问题阻止了:我有一个警告要在 @selector 上传递多个变量。我想要做的是在我的 UIViewController 中调用一个方法,但要延迟一段时间。所以我尝试制作第一个方法,在延迟后调用另一个方法,如下所示:
但它不起作用,我不知道为什么。
谢谢你的帮助 !
objective-c - forwardInvocation 中的奇怪“僵尸”:+ getArgument:atIndex 方法
这是我的代码的一部分:
这是处理 userGetWithCustomOptions: 方法的部分:
问题是当我使用“选项”变量时 - 它工作正常,但是当使用直接值时 - 它失败,应用程序崩溃。使用 Profile 我发现该方法调用指向已释放的对象。
为什么会发生这种情况?没有其他代码可以提供帮助。
ViewController.m 代码:https://gist.github.com/AndrewShmig/5398546
DPVkontakteUserAccount.m:https ://gist.github.com/AndrewShmig/5398557
objective-c - -[NSInvocation retainArguments] 是否复制块?
NSInvocation
的-retainArguments
方法在您不NSInvocation
立即运行但稍后执行时很有用;它保留对象参数,因此它们在此期间保持有效。
众所周知,块参数应该被复制而不是保留。我的问题是,-retainArguments
当它是块类型时,是否知道复制而不是保留参数?文档并未表明它确实如此,但这似乎是一件简单而明智的事情。
更新: iOS 7 中的行为似乎发生了变化。我刚刚对此进行了测试,在 iOS 6.1 及之前的版本中,-retainArguments
没有复制块类型的参数。在 iOS 7 及更高版本中,-retainArguments
不会复制块类型的参数。的文档-retainArguments
已更新为说它复制了块,但没有说明行为何时改变(这对于支持旧操作系统的人来说真的很危险)。
iphone - NSInvocation 的意外异常
以下代码引发异常。
vcClass
是一个 Class
对象(继承自UIViewController
)。Self
包含我的实现viewWillAppear:
带消息:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[NSInvocation setArgument:atIndex:]: index (1) out of bounds [-1, -1]
附加信息:iOS5、ARC。 有人可以解释我怎么了?
更新:
此代码代码给我响应消息。所以我的类对象是正确的 [vcClass instancesRespondToSelector:viewWillAppearSEL] 吗?NSLog(@"响应") : NSLog(@"不响应");
我也马上崩溃了[invocation setSelector:viewWillAppearSEL];
。这就是为什么我用 NSInvocation 将主题标题称为Unexpected 异常。
更新2:
还有我的实施viewWillAppear:
iphone - 如何使用 NSInvocation 调用类方法?
我有一个类方法,它没有在 h 文件中声明,但在 m 文件中实现。现在我想在另一个类中调用它,由于返回值是一个int,我不能直接使用选择器,所以我使用NSInvocation。
以下是我正在做的事情:
调用不成功,为什么?