Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c @属性(弱,非原子)或@property(非原子,弱)?哪一个最接近苹果的指导方针?_Objective C - Fatal编程技术网

Objective c @属性(弱,非原子)或@property(非原子,弱)?哪一个最接近苹果的指导方针?

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

如果我查看UIViewController.h,我可以看到保留之前的原子性:

@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?