- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 NSInvocation
并需要从中检索其中一个属性。
我正在使用以下代码,但我在调用 [invocation invoke];
时有一些奇怪的行为:
NSString *propertyName = nil;
[invocation getArgument:&propertyName atIndex:3];
我读到为了让它在 ARC 下工作,我们需要使用 __unsafe_unretained
:
__unsafe_unretained NSString *propertyName = nil;
[invocation getArgument:&propertyName atIndex:3];
成功了,很好!!但我想了解为什么。谁能解释一下?
最佳答案
signature对于 -[NSInvocation getArgument:atIndex:]
是
- (void)getArgument:(void *)buffer
atIndex:(NSInteger)index
所以 buffer
是无类型的,不一定是对象。 ARC 要求您使用非保留引用(因此是 unretained 部分),它不会使引用的对象保持事件状态并且可以悬空(因此是危险的或不安全的),因此它必须是 qualified作为 __unsafe_unretained
,另见 clang specification ,你要告诉ARC不要关心这 block 内存。
不再真正推荐使用 NSInvocation,它不能很好地与 ARC 一起工作并且在 Swift 中不可用。作为替代方案,您可以使用 -[NSObject methodForSelector:]
.
关于ios - 为什么缓冲区需要在 NSInvocation 上被 __unsafe_unretained - getArgument :atIndex:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33422947/
我是 android 的新手,我已经被这个问题困扰了 2 天。我的 fragment 无法从我的 Activity 中得到论据。这是我的 Activity 代码。 private void Count
在下面的代码中,我尝试将传感器值从 Frag1 传递到 Frag2通过 mainActivity。 Frag1 实现了 sensorEvenListener,在 Frag1 的 onResume 中,
我有一个带有两个插件的扩展,我需要从这两个插件访问 getVars。 $this->request->getArguments(); 当然,上面的代码只给了我当前插件中的变量。 有人知道我如何从不同的
我知道这个问题已经被问了一遍又一遍,但我无法做到这一点。 我只想将参数从 Activity 传递到 Fragment。我已经尝试了网上能找到的所有方法,但无法使其工作。我总是收到 NullPointe
我仍在学习 AS 和 java,最近购买了一个应用程序代码,但它的 fragment 内有“getArguments()”,我想将其转换为 Activity 。感谢帮助。 这是代码: String
我在向 fragment 发送值时遇到问题。 public class ActivityMain extends ActionBarActivity { int currentPage = 1; pr
我在使用 fragment 时遇到问题。事实上,我正在尝试将一些参数从我的 Activity 传递给 Fragment。问题是我的 getArguments() 调用总是返回 null。这是我的代码:
尝试使用 Fragments,我开始思考填充 fragment 的正确方法。 正如文档所说,我使用 newInstance() 模式向我的 fragment 添加参数: public static I
对于 Android 世界来说几乎是新手,我在 fragment 之间传递参数时遇到了问题。我需要它来设置标签导航菜单的特定标签的 ID。 在我的 MainActivity.java 中,我正在创建我
希望有人能帮助我理解这一点: 我正在使用一个单一 Activity 应用程序和许多在同一容器中替换的 fragment ,并且我正在启用“不保留 Activity ”选项的真实设备中测试我的应用程序
Android Studio 0.8.7 我有以下函数在 fragment 中设置一些参数: public static Fragment newInstance(UUID uuid) {
我正在尝试使用 setArguments() 通过 Bundle 将值从一个 Activity 传递到另一个类 extends Fragment 当我按下其中一个时ListView 中列出的项目。 如
我正在尝试检索对话框流的实现中的参数。 当我使用 let name = agent.getArgument('name'); 检索参数时,出现以下错误 TypeError: agent.getArgu
getArguments() 返回 null! Activity 代码: if (savedInstanceState == null) { // During initial
官方例子中http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog该 fragment 是使
对不起我的英语 在配置更改期间,我是否应该保存和恢复参数(由getArguments()返回)outState\savedInstanceState 吗? 或者 getArguments() 即使在配
正如标题所示。 我从这里下载了 Fragment 代码,http://developer.android.com/shareables/training/FragmentBasics.zip . 它是
在我的应用程序被 Android 杀死后,我得到一个 ClassCastException。 首先,我启动我的应用并打开一些Activity/Fragment。 (打开的 Activity/fragm
我有一个 Fragment,它有一个 TabHost 作为根布局,如下所示...
本文整理了Java中com.ximpleware.xpath.Yylex.getArgument()方法的一些代码示例,展示了Yylex.getArgument()的具体用法。这些代码示例主要来源于G
我是一名优秀的程序员,十分优秀!