抱歉读了很久。这是我很困惑的书的一部分。
当前编码约定的趋势(Xcode 4 已采用)是使用下划线 (_) 作为实例变量名称的前导字符。因此,您在 Xcode 生成的模板代码中看到的对以 _ 开头的变量的任何引用都是直接按名称引用实例变量。当你看到一个看起来像这样的@synthesize 指令时
@synthesize 窗口=_window;
为什么不能_window
首先在 @propterty/synthesize 中声明而不是将其分配给window
?
它说为名为 window 的属性合成 getter 和 setter,并将该属性与名为 _window 的实例变量相关联(不必显式声明)。这有助于区分实例变量和属性的使用,并鼓励您通过 setter 和 getter 方法设置和检索实例变量的值。也就是说,写这样的东西
[窗口 makeKeyAndVisible]; // 这行不通
将失败,因为没有名为 window 的实例变量。相反,您必须直接按其名称命名实例变量,例如
[_window makeKeyAndVisible];
或者,最好使用访问器方法:
[self.window makeKeyAndVisible];
为什么self.window
其他方法不需要下划线?