2

随着 Objective-C 的发展(我专门将它与 xcode/ios 一起用于 iPhone/iPad 开发),似乎有许多不同的方式可以布置类实例变量。是否存在已成为普遍共识的“最佳实践”方式?(我意识到 Apple 演示/示例代码在风格方面无处不在)

特别是处理私有变量的想法。以下是我见过的管理类的一些实例变量的多种方法(为简洁起见,我省略了接口/实现)——我什至不包括使用下划线命名的综合属性。

。H

@property (nonatomic, strong) NSString *aString;

.m

@synthesize aString;

- (void)aMethod {
   aString = @"Access directly, but if I don't have custom getter/setters and am using ARC, do I care?";
   self.aString = @"Access through self";
}

或这个:

。H

@property (readonly) NSString *aString;

.m

@property (nonatomic, strong) NSString *aString;
...
@synthesize aString;

或这个:

.m

@interface aClass {
 NSString *aPrivateString;
}

- (void)aMethod {
  aPrivateString = @"Now I have to access directly, but is this atomic/nonatomic?";
}

我不希望这个问题变成一个风格论据,但在我看来,应该有一个“如果你没有做一些特定、复杂或奇怪的事情,请使用这种方法来定义你的类变量”标准。

4

1 回答 1

2

我更喜欢对公共和私有 ivars/属性使用以下约定:

。H

@property (nonatomic, strong) NSString *publicString;

.m

@implemention aClass 
{
  NSNumber *_privateNumber;
}
@synthesize publicString = _publicString;

这样,以 _ 开头的所有内容都是一个 ivar(_publicString 是该属性的底层 ivar,这会阻止我在想使用 self.publicString 时使用 publicString)。

于 2012-07-08T19:55:11.923 回答