0

我正在尝试理解我拥有的一些示例代码。在 .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 ....

谢谢!

4

2 回答 2

1

这只不过是一种常见的约定,而是一种有用的约定。

然而现在,有了自动合成属性,它就不再需要了。Xcode 在幕后合成了一个 @property xxxx 和一个名为 _xxxx 的 ivar。

于 2013-02-14T16:36:22.500 回答
0

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

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

例子:

variable当自动合成成为_variable

于 2013-02-14T16:43:27.727 回答