Редактировать в комментариях:
Я попробовал это:.
NSPredicate *propertyPredicate = [NSPredicate predicateWithFormat:@"kind = %d", CXCursor_ObjCPropertyDecl];
NSMutableDictionary *properties = [NSMutableDictionary new];
[protocol visitChildrenMatchingPredicate:propertyPredicate withBlock:
^(CLNGEntity *property, CLNGEntity *parent)
{
CXCursor cursor = property.cxCursor;
CXType type = clang_getCursorType(cursor);
CXString spelling = clang_getTypeSpelling(type);
const char *cSpelling = clang_getCString(spelling);
NSLog(@"Property type %s", cSpelling);
return CXChildVisit_Continue;
}];
(Не заботьтесь о CLNG…
типов, они являются простыми Objective-C обертками вокруг соответствующих CX…
типов только дополнительная возможность, используемая здесь, - это возможность посещать блоки, соответствующие образцу NSPredicate
.)
Однако, с помощью этого кода я получаю только правописание типа имущества, т.е. е. ...:
2015-09-16 10:18:33.689 obcl_cloudInterfaceExporter[1544:507] Property type NSString *
... но не полная декларация собственности. Но я бы поспорил, что существует функция печати (сбрасывания) всего курсора. Но я не могу найти его сейчас. Сожалею. (Возможно, это было только в C++ API, но позже я решил переключиться на C API.)
Однако, поскольку вы работаете над clang, у вас будет больше шансов найти его, если я не помню, что совершенно неправильно.
Порядок не имеет значения. Используйте любой заказ. – rmaddy
Я знаю, что это не имеет значения. Речь идет о согласованности и рекомендации Apple. –
Сделайте это так, чтобы он был согласован в одном файле. – Alistra