这个问题已经在这里有了答案:
9年前关闭。
这是什么意思? @synthesize window=_window;
我知道一般来说,这意味着“某个类”有一个窗口,但是为什么要使用_window
而不是window
?这是一个 namespace 的东西吗?
最佳答案
我将用基本的英语来介绍这种编程约定。
在其他语言中,很常见的约定是用前面的m
,m_
或_
命名成员变量,以将它们与本地声明的变量区分开,并在必要时表示应写入访问器(无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]
的属性访问器。