如果我控制 - 从我的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
为什么自动生成的代码不符合此约定?
答案 0 :(得分:1)
自iOS推出以来,Objective C和Cocoa框架的发展速度有所提升。这里讨论了这个问题的答案和对Objective C 2.0中属性的见解:Why rename synthesized properties in iOS with leading underscores?