我正试图让我看到一些示例代码。在.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 ....
谢谢!
答案 0 :(得分:1)
它只不过是一种常见的约定,但却是一种有用的约定。
但是现在,使用自动合成属性不再需要了。 Xcode在后台合成了@property xxxx和名为_xxxx的ivar。
答案 1 :(得分:0)
人们这样做是为了让他们创建的变量与xcode变量不同,并使它们更简单,更容易处理......
但它不再像以前那样有用,因为现在xCode以这种方式自动合成变量。
示例:
自动合成时 variable
变为_variable