9

現在のコードをARCに移行しようとすると、NSInvocation引数としてNSStringを渡すたびにエラーが発生します。

例:

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

[編集]メニューから[リファクタリング]->[Objective-CARCに変換]オプションを使用すると、エラーが発生します。テキストは「NSInvocationのsetArgumentは、__unsafe_retained以外の所有権を持つオブジェクトで使用するのは安全ではありません。」です。

どうすればこれを回避できますか?

4

2 に答える 2

10

これはうまくいくかもしれません。

__unsafe_unretained NSString *one = @"Hello World";
于 2012-01-10T22:37:20.657 に答える
5

Joshua Weinberg がコメントしたように、NSInvocation の使用は推奨されなくなりました。パラメータが 2 つまである場合は、performSelector を使用できます。パラメータが 3 つ以上の場合は、ここで説明されているように、NSObject の-methodForSelector:を使用できます。

于 2012-08-10T17:57:04.520 に答える