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: как описано здесь.