NSInvocation и ARC (автоматический подсчет ссылок)

При попытке перенести текущий код в 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 ответа

Решение

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

__unsafe_unretained NSString *one = @"Hello World";

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

Другие вопросы по тегам