NSInvocation和ARC(自动引用计数)

时间:2012-01-10 22:31:43

标签: cocoa automatic-ref-counting nsinvocation

当我尝试将当前代码迁移到ARC时,每当我将NSString作为NSInvocation参数传递时,我都会收到错误。

示例:

NSInvocation inv = ...;
NSString *one = @"Hello World!";
[inv setArgument:&one atIndex:2];

当我使用Refactor时发生错误 - >从“编辑”菜单转换为“Objective-C ARC”选项。文本是“NSInvocation的setArgument与安全性不同于__unsafe_retained的对象一起使用是不安全的。”

我如何解决这个问题?

2 个答案:

答案 0 :(得分:10)

这可能有用;

__unsafe_unretained NSString *one = @"Hello World";

答案 1 :(得分:5)

正如Joshua Weinberg评论的那样,不再推荐使用NSInvocation。 如果您有最多两个参数,则可以使用performSelector。 对于三个或更多参数,您可以按照-methodForSelector:的说明使用NSObject的here