我倾向于按以下顺序声明我的属性属性:可写性、Setter 语义、原子性
例如:
@property (readwrite, strong, nonatomic) NSString *foo;
我只是想知道 Objective-C 开发人员是否有一个普遍接受的约定?苹果的文档似乎对此保持沉默。
我倾向于按以下顺序声明我的属性属性:可写性、Setter 语义、原子性
例如:
@property (readwrite, strong, nonatomic) NSString *foo;
我只是想知道 Objective-C 开发人员是否有一个普遍接受的约定?苹果的文档似乎对此保持沉默。
不。
您将看到代码,甚至来自 Apple,它们以不同的顺序声明。它对编译器没有任何影响,并且由于它们的数量不多,因此也不一定会使代码更易于阅读。
使用您喜欢的任何约定(包括不约定)。
下面是clang对应的源码。Xcode 可以根据枚举顺序生成代码。所以我认为这个属性没有完全约定的顺序。
/// Represents one property declaration in an Objective-C interface.
///
/// For example:
/// \code{.mm}
/// \@property (assign, readwrite) int MyProperty;
/// \endcode
class ObjCPropertyDecl : public NamedDecl {
public:
enum PropertyAttributeKind {
OBJC_PR_noattr = 0x00,
OBJC_PR_readonly = 0x01,
OBJC_PR_getter = 0x02,
OBJC_PR_assign = 0x04,
OBJC_PR_readwrite = 0x08,
OBJC_PR_retain = 0x10,
OBJC_PR_copy = 0x20,
OBJC_PR_nonatomic = 0x40,
OBJC_PR_setter = 0x80,
OBJC_PR_atomic = 0x100,
OBJC_PR_weak = 0x200,
OBJC_PR_strong = 0x400,
OBJC_PR_unsafe_unretained = 0x800,
/// Indicates that the nullability of the type was spelled with a
/// property attribute rather than a type qualifier.
OBJC_PR_nullability = 0x1000,
OBJC_PR_null_resettable = 0x2000,
OBJC_PR_class = 0x4000
// Adding a property should change NumPropertyAttrsBits
};
enum {
/// Number of bits fitting all the property attributes.
NumPropertyAttrsBits = 15
};
/* Omitted */
};