在iOS中调用属性的getter函数时
我在类的实现文件中定义了类的属性在iOS中调用属性的getter函数时,ios,objective-c,Ios,Objective C,我在类的实现文件中定义了类的属性 @property (nonatomic, strong) IBOutlet UIView *headerView; 然后我通过-(UIView*)headerView(){…}覆盖它的getter函数,以从主包中获取一些资源 在下面的代码中,我需要在加载资源后将属性“headerView”设置为其他视图的子视图。下面是加载资源失败的代码 [self.tableView setTableHeaderView:_headerView]; 未调用Getter函数
@property (nonatomic, strong) IBOutlet UIView *headerView;
然后我通过-(UIView*)headerView(){…}
覆盖它的getter函数,以从主包中获取一些资源
在下面的代码中,我需要在加载资源后将属性“headerView”设置为其他视图的子视图。下面是加载资源失败的代码
[self.tableView setTableHeaderView:_headerView];
未调用Getter函数。我将属性变量更改为self.headerView:
[self.tableView setTableHeaderView:self.headerView];
它现在起作用了
self.xxx和_xxx之间有什么区别吗?我认为它们作为不同的方面与属性相同。属性由Objective-C中的实例变量支持。本质上,
@property
默认生成一个getter和setter方法,您可以通过self.property
访问该方法。如果使用\u属性
,则绕过setter和getter,直接跳到实例变量。只有在init
/dealloc
中,或者需要绕过某人在getter/setter方法中实现的副作用时,才应该直接使用实例变量。否则,应始终使用self.property
而不是\u property
来访问和设置变量 属性由Objective-C中的实例变量支持。本质上,@property
默认生成一个getter和setter方法,您可以通过self.property
访问该方法。如果使用\u属性
,则绕过setter和getter,直接跳到实例变量。只有在init
/dealloc
中,或者需要绕过某人在getter/setter方法中实现的副作用时,才应该直接使用实例变量。否则,应始终使用self.property
而不是\u property
来访问和设置变量 可能的重复可能的重复