为什么自动生成的IBOutlet @properties不使用@synthesize按钮= _button约定?

时间:2012-01-04 00:21:07

标签: iphone objective-c ios properties nib

如果我控制 - 从我的NIB拖动UI元素(例如,UITableView)到我的.h文件,它将生成如下代码:

// .h
@property (strong, nonatomic) IBOutlet UITableView *tableView;

// .m
@synthesize tableView;

然而,许多人似乎认为这在.m文件

中更为可取
@synthesize tableView = _tableView;

原因是它强迫您通过属性设置器和getter(或使用dot-syntax self.foo)而不是直接访问ivar。它避免了方法名称中的命名冲突...例如

中的 tableView
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

为什么自动生成的代码不符合此约定?

1 个答案:

答案 0 :(得分:1)

自iOS推出以来,Objective C和Cocoa框架的发展速度有所提升。这里讨论了这个问题的答案和对Objective C 2.0中属性的见解:Why rename synthesized properties in iOS with leading underscores?