gpt4 book ai didi

ios - 两种定义Private成员变量的方式有什么不同

转载 作者:行者123 更新时间:2023-11-28 21:41:22 24 4
gpt4 key购买 nike

第一种方式。

//Myclass.m
@implementation Myclass{
NSString * name;
}
-(void) print{
NSLog(@"%@",name);
}
@end

第二种方式。

//Myclass.m
@interface Myclass()
@property(nonatomic) NSString *name;
@end

@implementation Myclass
-(void) print{

NSLog(@"%@",_name);
}
@end

为什么第一种方式不能通过'self.name'访问'name',而第二种方式可以使用'self.name'和'_name'。这两种方式有什么不同。

我对此感到困惑,因为我想覆盖“isEqual”方法,第一种方式无法访问其他对象的私有(private)成员变量,但第二种方式可以使用“.”。访问。

请原谅我的英语。

最佳答案

我不会使用这些。我总是只使用属性...

//Myclass.m
@interface Myclass()
@property(nonatomic) NSString *name;
@end

@implementation Myclass

-(void) print{
NSLog(@"%@",_name);
NSLog(@"%@",self.name);
}

@end

属性通过 getter 和 setter 方法合成到 iVars 中。 iVar 始终称为 _propertyName。

与使用 iVars(IMO 无论如何)相比,使用属性可以让您更轻松地微调其 ARC 属性。

关于ios - 两种定义Private成员变量的方式有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31903359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com