2015-09-06 3 views
0

Если я смотрю на UIViewController.h, я могу видеть атомарность перед тем: способность удерживать@property (слабый, неатомный) или @property (неатомный, слабый)? Какой из них ближе всего к рекомендациям Apple?

@property(nullable, nonatomic, readonly, strong) NSBundle *nibBundle; 

Как будто я тащу капли элемент из .xib в файл коллегой, он генерирует перед тем атомарностью способность удерживать :

@property (weak, nonatomic) IBOutlet UIView *testView; 

Источник: Xcode 7 бета 5.

Какой рекомендуется или следующие руководящие принципы Apple, больше CLO Сэли?

+0

Порядок не имеет значения. Используйте любой заказ. – rmaddy

+0

Я знаю, что это не имеет значения. Речь идет о согласованности и рекомендации Apple. –

+0

Сделайте это так, чтобы он был согласован в одном файле. – Alistra

ответ

3

Какой из них рекомендуется или следуйте рекомендациям Apple более тесно?

Порядок атрибутов не имеет значения, и я не знаю никаких указаний относительно порядка. Лично я обычно добавляю спецификатор атомичности в конце, потому что это почти всегда одно и то же, о чем я забочусь меньше всего. Хороший друг ставит его первым, потому что проще всего пропустить, когда все спецификаторы nonatomic выстраиваются в линию. Делайте то, что вам больше нравится.

+1

Я согласен с вашим другом. «Неважное» свойство «@» также находится на первом месте. –

+2

'@ property' - самая значительная часть линии, @ AminNegm-Awad; он рассказывает вам, как интерпретировать все остальное. –

+1

Конечно, поскольку '@ interface' является * самой * значительной частью объявления класса? Я не компилятор, я читатель исходного кода. Так как я читал '@ interface' с моей лимбической системой, я читал' @ property' с моей лимбической системой. Мое внимание сосредоточено на следующем. –

-1

Редактировать в комментариях:

Я попробовал это:.

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, у вас будет больше шансов найти его, если я не помню, что совершенно неправильно.

+2

Я специально работаю над улучшением формата uncrustify и clang ... –

+1

Когда я создаю компилятор с clang, он позволяет мне распечатать AST как исходный код, IIRC. Поэтому просто возьмите порядок этого вывода. –

+0

Ницца, Амин. Поскольку я не знаю, как получить AST или распечатать его в качестве исходного кода, не могли бы вы рассказать нам данный заказ? –

Смежные вопросы