NSInvocation и ARC (автоматический подсчет ссылок) - PullRequest
9 голосов
/ 11 января 2012

При попытке перенести текущий код в ARC я получаю ошибки всякий раз, когда передаю NSString в качестве аргумента NSInvocation.

Пример:

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

Ошибка возникает, когда я использую опцию Refactor -> Convert to Objective-C ARC из меню Edit. Текст «NSInvocation setArgument небезопасно для использования с объектом, владельцем которого является __unsafe_retained.»

Как бы мне обойти это?

Ответы [ 2 ]

10 голосов
/ 11 января 2012

Это может сработать;

__unsafe_unretained NSString *one = @"Hello World";
5 голосов
/ 10 августа 2012

Как прокомментировал Джошуа Вайнберг, использование NSInvocation больше не рекомендуется.Если у вас есть до двух параметров, вы можете использовать executeSelector.Для трех или более параметров вы можете использовать -methodForSelector NSObject: как объяснено здесь .

...