如果我查看UIViewController.h,我可以在保留性之前看到原子性:
@property(nullable, nonatomic, readonly, strong) NSBundle *nibBundle;
好像我将.xib中的元素拖放到对应文件中,它会在原子性之前生成可保留性:
@property (weak, nonatomic) IBOutlet UIView *testView;
来源:Xcode 7 beta 5。
建议使用哪一种或更严格遵循Apple指南?
答案 0 :(得分:3)
建议使用哪一种或更严格遵循Apple指南?
属性的顺序并不重要,我不知道有关订单的任何指导原则。就个人而言,我通常将原子性说明符放在最后,因为它几乎总是相同的,而我最不关心的事情。一位好朋友把它放在第一位,因为当所有nonatomic
指定符排列时,它最容易跳过。做你最喜欢的事。
答案 1 :(得分:-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…
类型,它们是围绕相应CX…
类型的简单Objective-C包装器。这里使用的唯一附加功能是访问匹配的块的可能性。 NSPredicate
实例。)
但是,使用此代码我只得到属性的类型的拼写,i。即...
2015-09-16 10:18:33.689 obcl_cloudInterfaceExporter[1544:507] Property type NSString *
...但不是完整的财产声明。但我敢打赌,有一个函数可以打印(转储)整个游标。但我现在找不到它。抱歉。 (也许它只在C ++ API中,但后来我决定切换到C API。)
然而,既然你正在研究clang,那么如果我不记得那么完全错误,你将有更好的机会找到它。