Objective c @属性(弱,非原子)或@property(非原子,弱)?哪一个最接近苹果的指导方针?
如果我查看UIViewController.h,我可以看到保留之前的原子性:Objective c @属性(弱,非原子)或@property(非原子,弱)?哪一个最接近苹果的指导方针?,objective-c,Objective C,如果我查看UIViewController.h,我可以看到保留之前的原子性: @property(nullable, nonatomic, readonly, strong) NSBundle *nibBundle; @property (weak, nonatomic) IBOutlet UIView *testView; 就像我将一个元素从.xib拖放到一个对应文件中一样,它在原子性之前生成可保留性: @property(nullable, nonatomic, readonly, st
@property(nullable, nonatomic, readonly, strong) NSBundle *nibBundle;
@property (weak, nonatomic) IBOutlet UIView *testView;
就像我将一个元素从.xib拖放到一个对应文件中一样,它在原子性之前生成可保留性:
@property(nullable, nonatomic, readonly, strong) NSBundle *nibBundle;
@property (weak, nonatomic) IBOutlet UIView *testView;
来源:Xcode 7 beta 5
推荐哪一个或更严格地遵循苹果的指导方针
推荐哪一个或更严格地遵循苹果的指导方针
属性的顺序并不重要,我不知道关于顺序的任何指导原则。就我个人而言,我通常把原子性说明符放在末尾,因为它几乎总是一样的,而且是我最不关心的事情。一个好朋友把它放在第一位,因为当所有的非原子
说明符排成一行时,它最容易跳过。做你最喜欢做的事。编辑评论:
我试了一下:
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的拼写。e、 …:
2015-09-16 10:18:33.689 obcl_cloudInterfaceExporter[1544:507] Property type NSString *
…但不是完整的财产声明。但我敢打赌,有一个函数可以打印(转储)整个光标。但我现在找不到。很抱歉(也许它只在C++ API中,但后来我决定切换到C API)。
但是,由于您正在研究clang,如果我不记得完全错误,您将有更好的机会找到它。顺序与此无关。你想用什么顺序都行,我知道这无关紧要。问题是关于一致性和苹果推荐。让它在一个文件中保持一致。我同意你朋友的看法。“不重要的”
@property
也排在第一位。@property
是该行最重要的部分,@AminNegm Awad;它告诉您如何解释其他内容。当然,@interface
是类声明中最重要的部分吗?我不是编译器,我是源代码读者。因此,当我用我的边缘系统阅读@界面
时,我用我的边缘系统阅读@属性
。我的注意力集中在以下内容上:当我用clang构建一个编译器时,它允许我将AST作为源代码IIRC打印出来。所以只需按照这个输出的顺序。很好,阿明。由于我不知道如何获取AST或将其作为源代码打印,您能告诉我们给定的顺序吗?不幸的是,我没有找到打印功能。请参见编辑我的答案。也许我完全错了,但我很确定光标有打印功能。重读你的评论:你正在改进叮当格式,不知道如何获得AST?