ARC запрещает объекты Objective-C в структурах или объединениях, несмотря на то, что они маркируют файл -fno-objc-arc
ARC запрещает Objective-C объекты в структурах или объединениях, несмотря на то, что они отмечают файл -fno-objc-arc?
Почему это так?
У меня было предположение, что если вы отметите его -fno-objc-arc, у вас нет этого ограничения.
Ответ 1
Если вы получили это сообщение, попробуйте __unsafe_unretained. Это безопасно, если объекты в структуре не будут сохранены.
Пример. Если вы используете OpenFeint с ARC, класс OFBragDelegateStrings говорит об этой ошибке в структуре.
Скорее, чем использование struct, вы можете создать класс Objective-C для управления данными.
Ответ 3
Это потому, что дуга не может отслеживать объекты в структурах или объединениях (так как они в этой точке простые C-указатели).
Даже если вы отметили рассматриваемый файл/класс -fno-objc-arc, вы все равно можете передать объект, управляемый дугой, как параметр, что, скорее всего, приведет к утечке памяти.