IOS,为什么有些开发人员在impimetation中创建带下划线的变量(_variable)

时间:2013-02-14 16:22:29

标签: ios objective-c class variables

我正试图让我看到一些示例代码。在.h文件中,变量以以下方式声明

@property (readonly, nonatomic) NSString *username;
@property (readonly, nonatomic, unsafe_unretained) NSURL *avatarImageURL;

在实施文件中

   @private
        NSString *_avatarImageURLString;
    }
   @synthesize username = _username;
- (id)initWithAttributes:(NSDictionary *)attributes {
    self = [super init];
    if (!self) {
        return nil;
    }
    _username = [attributes valueForKeyPath:@"username"];
    _avatarImageURLString = [attributes valueForKeyPath:@"avatar_image.url"];
    return self;
}

- (NSURL *)avatarImageURL {
    return [NSURL URLWithString:_avatarImageURLString];
}

我知道_variable是类中变量的约定,但我不明白为什么这样做。为什么不直接使用用户名?为什么要创建另一个变量。另外,_avatarImageURLString让我更加困惑,为什么还要创建一个名为avatarImageURL的属性,如果你要创建另一个名为_avatarImageURLString ....

谢谢!

2 个答案:

答案 0 :(得分:1)

它只不过是一种常见的约定,但却是一种有用的约定。

但是现在,使用自动合成属性不再需要了。 Xcode在后台合成了@property xxxx和名为_xxxx的ivar。

答案 1 :(得分:0)

人们这样做是为了让他们创建的变量与xcode变量不同,并使它们更简单,更容易处理......

但它不再像以前那样有用,因为现在xCode以这种方式自动合成变量。

示例:

自动合成时

variable变为_variable