отключение ARC для .h файлов iphonesdk - PullRequest
2 голосов
/ 27 марта 2012

В моих проектах используется ARC, и я хочу использовать API GDATA, который не совместим с ARC. Я знаю, как отключить ARC для одного файла (добавив для этих файлов флаг компилятора -fno-objc-arc). Но в файле GDataObject.h есть определение структуры как

typedef struct GDataDescriptionRecord {
    NSString *label;
    NSString *keyPath;
    enum GDataDescRecTypes reportType;
} GDataDescriptionRecord;

Это вызывает ошибку типа

ARC forbids object in struct or union

Как мне избежать этой проблемы. Есть ли доступный ARC-совместимый GDATA API или какой-либо способ отключить дугу для файлов .h

1 Ответ

6 голосов
/ 30 марта 2012

Я бы использовал что-то вроде этого:

#if __has_feature(objc_arc)
#define ARC_MEMBER __unsafe_unretained
#else
#define ARC_MEMBER 
#endif

Тогда ваша структура будет выглядеть примерно так:

typedef struct GDataDescriptionRecord {
    ARC_MEMBER NSString *label;
    ARC_MEMBER NSString *keyPath;
    enum GDataDescRecTypes reportType;
} GDataDescriptionRecord;
...