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

iphone - Objective C - NSInvocation 将 self 作为发送者传递?

我正在尝试使用 NSInvocation 调用对象上的方法并将其sender作为参数发送。下面的代码调用了 mthod,但似乎传递给 mthod 的对象并不是真正的 self 对象

0 投票
1 回答
1942 浏览

objective-c - 使用 Block 参数构造 NSInvocation

我正在尝试将 Block 作为参数发送给 NSInvocation 调用的方法(对于上下文,该方法由 NSInvocationOperation 触发)。调用应该保留参数,它似乎适用于“常规”对象参数,但块的 retainCount 保持在 1。

我可以在方法调用中使用它之后释放它,但是如果在调用操作之前队列被解散,理论上可能会泄漏它。

一些代码:

我正在使用的块(在NSManagedObject子类的访问器方法中定义):

0 投票
2 回答
4990 浏览

iphone - 如何从 NSOperationQueue 中删除/取消 NSInvocationOperation?

在上下文中询问以下两个问题以维护 NSOperationQueue 和 NSInvocationOperation。

由于我已使用此概念下载多个视频,因此在完成视频下载后,如何从 NSOperationQueue 中删除/释放添加的 NSInvocationOperation?

另外,如果我想在下载过程中停止下载特定视频,我该怎么办?

0 投票
2 回答
672 浏览

objective-c - nsinvocation 是否被调用?

我是objective c和iphone开发的新手。我很困惑。我试图创建在运行时创建的按钮,单击另一个按钮后,应用程序不知道它:

我究竟做错了什么?调用被调用,但没有结果......我知道我可以这样创建它:

但是我需要使用调用,不知道为什么它不起作用?

谢谢你的帮助。

0 投票
2 回答
3740 浏览

objective-c - NSValue:getValue: 奇怪的行为,为什么会这样?

我尝试将 CGRect 传递给 NSInvocation (setArgument:atIndex:)。我用 NSValue 包装它,推送到 NSArry,然后从 NSArray 获取并使用 NSValue (getValue:)。(getValue:) 方法的调用导致之前声明的索引 NSInteger i 发生变化。谁能说出为什么会这样?

当此(getValue:)方法实现“i”的值从 2 更改为:1130102784 时,(setArgument:atIndex:)我有一个 SIGABRT,因为索引 i 超出范围。

那么为什么要[NSValue getValue:(*void) buffer]改变其他变量呢?

(PS我是在函数中做的,所以我简化了一个例子并直接初始化数组。如果我直接设置atIndex:2,它就完美了。但我很伤心我简化了一点,我需要将i传递给atIndex: )


感谢汤姆达林(特别是)和塞尔吉奥问题解决了。我删除这个:

并粘贴这个

谢谢你。Stackoverflow.com 对聪明人很有帮助的网站。

0 投票
14 回答
31450 浏览

objective-c - Objective-C:如何使用 BOOL 类型的参数调用 performSelector?

有没有办法发送一个BOOLin 选择器?

或者我应该使用NSInvocation?有人可以写一个样本吗?

0 投票
5 回答
4480 浏览

objective-c - 为什么 NSInvocation getReturnValue: 丢失对象?

我需要你的帮助。我对 NSInvocation 'getReturnValue:' 方法有一些问题。我想以编程方式创建 UIButton,甚至更多,我想使用 NSInvocation 并通过 NSArray 传递值来动态创建它(这就是我包装 UIButtonTypeRoundedRect 的原因)。

清单。

NSLog 输出:sizeof(UIButton)=140,sizeof(result)=4,methodreturnlength = 4,sizeof(*result)=1

问题是来自 NSInvocation 的值是大小为 4 字节的指针。它应该指向 UIButton 对象,大小为 140 字节。但实际上是指1个字节的数据。那么 UIButton 对象会发生什么,应该由 'buttonWithType:' 初始化?

得到一些答案后添加:

澄清一下:我想得到UIButton对象,但是在这段代码之后id pushButton5 = (id) result;,当我尝试使用它时pushButton5,它会导致EXC_BAD_ACCESS. 有人能帮我吗?

会因为这个而发生吗?

这是正确的,不是吗?

0 投票
0 回答
96 浏览

iphone - 向将要生成的对象发送消息

我处于一种情况,我需要发送一个对象和一个方法名称 UIViewController可能会或可能不会在未来被实例化。为了让事情更有趣一点,在推送了两个或三个额外的 UIViewController 之后,UIViewController 将被推送到 UINavigationController。

最好的方法是什么?一种丑陋的方法是通过中间的控制器中继消息包(一个对象和一个方法名称)。太丑了

简单地继承 UINavigationController 并悬挂对象和方法名称?也许。那我怎么知道什么时候清理那个消息包呢?

不过,在这种情况下,NSInvocation 看起来确实很有希望。任何想法?

不不不,请不要单例,或外部结构。


编辑:感谢您的评论。

@Akshay,我已经考虑过了。问题是如果你想将消息包(一个对象和一个方法名)发送到特定navigationController下的特定对象怎么办?此外,如果目标对象未实例化,则需要清除单例以供以后使用。但是你怎么知道什么时候清理呢?使用单例只是一团糟。

@Praveen-K,NSNotifcation 仅适用于那些已经存在的人。我说我想向一个将要生成的对象发送一个消息包。

@PragmaOnce,我和另外两个队友现在正在设计架构。希望这能解释。拜托,没有数据中心单身人士。

@Sedate Alien,没错!

@9dan,感谢您的意见。事实上,我们有 NSClassFromString、NSSelectorFromString 和 performSelector,我们可以实例化任何对象并发送消息以执行具有任意数量对象的任何方法。

问题是如何优雅地跨多个对象发送该消息,在我的例子中是 UIViewController?假设你在一个 UIViewController,并且你知道你会在当前的 UIViewController 之上再推几个 UIViewController。之后,您可能会或可能不会实例化特定类的对象并使用对象执行方法。我们如何在不使用单例的情况下做到这一点?必须有一种方法可以很好地处理这个问题。我认为 NSInvocation 具有这种能力。

0 投票
1 回答
1114 浏览

objective-c - 使用 ARC 访问 forwardInvocation 的方法?

我正在使用forwardInvocation:在 Objective-C 中编写OpenStruct的克隆。但是,编译器显然不知道编译时的转发。用 ARC 编译给了我很多警告。

该代码是开源的,可在Github上获得,但目前使用 -fno-objc-arc 编译。如果有人可以看看我如何使这个 ARC 兼容,我将不胜感激。

0 投票
2 回答
1182 浏览

objective-c - 在 NSOperation 中执行块

我在某个类中有一个使用块执行某些任务的方法。当我使用 NSInvocationOperation 执行该方法时,控制永远不会进入块。我尝试在块内登录,但实际上从未调用过。但是,如果我只是用该类的实例调用该方法,那么一切都会按预期工作。

不要块在 NSOperation 中运行?