10

我倾向于按以下顺序声明我的属性属性:可写性、Setter 语义、原子性

例如:

@property (readwrite, strong, nonatomic) NSString *foo;

我只是想知道 Objective-C 开发人员是否有一个普遍接受的约定?苹果的文档似乎对此保持沉默。

4

2 回答 2

6

不。

您将看到代码,甚至来自 Apple,它们以不同的顺序声明。它对编译器没有任何影响,并且由于它们的数量不多,因此也不一定会使代码更易于阅读。

使用您喜欢的任何约定(包括不约定)。

于 2012-10-31T16:34:14.667 回答
0

下面是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 */
};
于 2018-09-18T01:40:28.550 回答