这个问题已经在这里有了答案:




9年前关闭。






这是什么意思? @synthesize window=_window;我知道一般来说,这意味着“某个类”有一个窗口,但是为什么要使用_window而不是window?这是一个 namespace 的东西吗?

最佳答案

我将用基本的英语来介绍这种编程约定。

在其他语言中,很常见的约定是用前面的mm__命名成员变量,以将它们与本地声明的变量区分开,并在必要时表示应写入访问器(无classInstance.m_Variable = 5)。

如果Objective-C程序员遵循此约定声明了ivars(并且应该这样做),并且使用了基本语法@synthesize _window;,则该属性的用法会有些难看:classInstance._window = myWindow[classInstance set_window:myWindow]。使用语法@synthesize window=_window;可以使Obj-C程序员使用流行的编程标准(在ivars之前为_),同时拥有使用Apple标准classInstance.window = myWindow[classInstance setWindow:myWindow]的属性访问器。

10-02 09:34