在Objective-C中定义实例变量

时间:2012-07-08 19:45:01

标签: objective-c ios xcode coding-style

随着Objective-C的发展(我专门用于iPhone / iPad开发的xcode / ios),你可以通过许多不同的方式来布局你的类实例变量。是否有一种“最佳实践”方式成为共识? (我觉得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?";
}

我不希望这个问题变成一个样式参数,但在我看来应该有一个“如果你没有做某些特定或复杂或奇怪的事情,使用这种方法来定义你的类变量”标准

1 个答案:

答案 0 :(得分:2)

我更喜欢对公共和私人ivars / properties使用以下约定:

·H

@property (nonatomic, strong) NSString *publicString;

的.m

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

这样,以_开头的所有内容都是一个ivar(_publicString是属性的底层ivar,这使我无法使用publicString,而我想使用self.publicString)。