При попытке перенести мой текущий код в ARC, я получаю ошибки всякий раз, когда передаю NSString как аргумент NSInvocation.NSInvocation и ARC (автоматический подсчет ссылок)
Пример:
NSInvocation inv = ...;
NSString *one = @"Hello World!";
[inv setArgument:&one atIndex:2];
ошибка происходит, когда я использую Refactor -> Преобразовать в Objective-C вариант ARC в меню Edit. Текст: «Набор атрибутов NSInvocation не является безопасным для использования с объектом с собственностью, отличным от __unsafe_retained».
Как мне обойти это?
Это будет работать, но вы должны быть ОЧЕНЬ осторожны с обработкой памяти на этом. Я бы рекомендовал не использовать NSInvocation больше, если вы можете избежать этого ... –
Я использую OCMock, и он передает объект NSInvocation в свои блоки обратного вызова. Если вы не используете __unsafe_unretained по всем параметрам, ARC становится очень несчастным. Так что спасибо за подсказку, таинственные аварии исчезли! – phatmann