我在其实现文件中为类定义了一个属性.
@property (nonatomic, strong) IBOutlet UIView *headerView;
Run Code Online (Sandbox Code Playgroud)
然后我重写其getter函数,-(UIView*)headerView(){...}从主bundle获取一些资源.
在下面的代码中,我需要在加载资源后将属性"headerView"设置为其他视图的子视图.这是代码无法加载资源.
[self.tableView setTableHeaderView:_headerView];
Run Code Online (Sandbox Code Playgroud)
不调用Getter函数.我将属性变量更改为self.headerView:
[self.tableView setTableHeaderView:self.headerView];
Run Code Online (Sandbox Code Playgroud)
它现在有效......
self.xxx和_xxx之间有什么区别吗?我认为它们与不同方面的财产相同.
属性由Objective-C中的实例变量支持.实际上,@property默认情况下会生成一个getter和setter方法,您可以通过它访问self.property.如果使用_property,则绕过setter和getter并直接跳转到实例变量.您应该使用实例变量的唯一时间是在init/ dealloc或何时需要绕过某人可能已在getter/setter方法中实现的副作用.否则,你应该始终使用self.property而_property访问和设置您的变量.
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |