问题标签 [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.
objective-c - 用两个参数在主线程上执行选择器的好方法?
我正在寻找一种在主线程上使用两个参数执行选择器的好方法
我真的很喜欢使用
方法,除了现在我有两个参数。
所以基本上我有一个委托,我需要在加载图像时通知它:
但是我这样做的方法可能会在后台线程中调用,并且委托将使用此图像来更新 UI,所以这需要在主线程中完成。所以我真的希望委托也能在主线程中得到通知。
所以我看到了一个选项——我可以创建一个字典,这样我只有一个对象,其中包含我需要传递的两个参数。
但这种方法对我来说似乎不合适。有没有更优雅的方法来做到这一点?也许使用 NSInvocation?提前致谢。
cocoa - NSInvocation 和 ARC(自动引用计数)
在尝试将我当前的代码迁移到 ARC 时,每当我将 NSString 作为 NSInvocation 参数传递时,都会出现错误。
例子:
当我使用 Edit 菜单中的 Refactor -> Convert to Objective-C ARC 选项时会发生错误。文本是“NSInvocation 的 setArgument 不能安全地与拥有 __unsafe_retained 以外的所有权的对象一起使用。”
我将如何解决这个问题?
objective-c - 当前方法的 NSInvocation 的 getArgument 总是返回 null
我想获取我所在的当前函数的参数名称,以便如果当前实例上不存在该对象,我可以准备从文件系统加载该对象。(例如,如果 [foo dictTest] 不可用,我想将它之前保存的 plist 版本加载到该 ivar 中)
我想通过提供我作为参数提供给当前函数的 ivar 名称来查找文件。
这是功能代码:
一旦代码到达 NSLog,我就会从 firstArgument 获得一个空值。
这是为什么?有没有可能我必须等待我所在的当前方法的完整调用,或者创建一个代理函数实际上更好,该函数通过调用 setArgument 提供的 ivar 名称来隐式调用我的类方法,这样我可以像我想要的那样使用那个参数字符串吗?
提前非常感谢!
PS:在这个特定的示例中,我不想使用 KVC 来识别 ivar 并返回它。
iphone - NSInvocation 将 C 数组传递给 Objective-C 方法
我想在延迟后将 C 数组传递给 Objective-C 中的方法。通常我可以执行Selector:withObject:afterDelay,但我不能以任何方式更改数组或将它们转换为 NSMutableArrays、NSDictionaries 或任何其他 Cocoa 对象——它们必须是 C 数组。在我对 StackOverflow 和 Google 的研究中,我发现传递 C 原语的一种方法是将它们包装在 NSInvocation 中。我尝试使用下面的代码执行此操作,并将参数设置为指向正在传递的数组的指针。
当我尝试在下面的方法中从传递的数组中打印一些值时,我的测试应用程序不断崩溃。我可能只是错过了一些完全明显的东西。有人可以在这里阐明一下吗?
objective-c - 使用 NSOperation 的异步 NSURLConnection
我想NSURLConnection
在后台模式下做,因为它的响应有很多数据。论坛告诉使用 Apple 的有限长度编码在didEnterBackground
. 但我想避免它。而不是它,我通过 as 使用以下代码NSOperation
,NSInvocation
但它不起作用。connectToServer
正在NSURLConnection
手术中。有什么帮助吗?didReceiveData
,didReceiveResponse
委托方法不被调用?
objective-c - NSOperation 中的异步 NSURLConnection 与 NSInvocation?
我必须在后台模式下在 NSOPeration 中使用 Asynchrnous NSURLConnection,因为它的响应有大数据我必须避免在 didEnterBackground 中使用 Apple 的有限长度编码。而不是它,我通过 NSOperation 使用以下代码和 NSInvocation 作为,但它不起作用。 connectToServer 正在进行 NSURLConnection 操作。请问有什么帮助吗?didReceiveData,didReceiveResponse 委托方法没有被调用吗?
}
}
objective-c - 返回后使用 NSOperationQueue 延迟释放 malloc'd void*
我NSInvocation
用来获取一些方法返回,不幸的是我似乎有泄漏,但void*
在我从NSInvocation
.
在以下实现中,我尝试使用在下一个运行循环中执行的块来释放它,但由于returnBuffer
未分配而导致崩溃。
为什么我不能returnBuffer
在块中释放,如果它没有被分配,为什么它会通过returnBuffer!=NULL
?
这是一种与IMP
swizzling 有关的特殊方法,所以我不知道方法返回类型。把它放进去NSData
或什么都行不通。
答案
由于乔希的-[NSMutableData mutableBytes]
技巧
objective-c - 将选择器名称作为方法参数传递
我正在编写一个自定义帮助方法,该方法会被大量使用并返回几个按钮。每个按钮在按下时当然会有自己的目标选择器,我想将选择器作为参数传递给此方法,以便返回的按钮具有指定的选择器。
但我不确定如何将选择器作为方法参数传递。像这样的东西:
其中selectedFunction
是传递给方法的参数。
我尝试制作WhatClass?*
NSString 和 SEL,但结果是:
[NSInvocation invocationWithMethodSignature:]:方法签名参数不能为nil
objective-c - 如何从块内对主线程执行 UIKit 调用
我正在尝试从回调块内部推送视图控制器。我要推送的视图控制器包含一个 UIWebView,它抱怨我应该在主线程上调用它。我尝试使用 NSInvocation 无济于事。如何调用presentModalViewController:animated
主线程?
错误信息:
bool _WebTryThreadLock(bool), 0x6b21090: 试图从除主线程或web线程之外的线程获取web lock。这可能是从辅助线程调用 UIKit 的结果。现在崩溃...
我正在使用类别NSInvocation+CWVariableArguments。
objective-c - NSInvocation 和 block 有什么区别?
当我说阻止时,我的意思是:
此外,block 仅适用于 iOS4 及以上版本。
这两者有什么区别?