我从obj-c开始,有一些我没有得到的东西。
首先是我(哦,我来自AS3编码视角)认为如果你想在你的类中有一个变量,你需要先用@property运算符在头文件中声明它,然后@在.m文件中合成,你也必须在头文件中声明方法,但是我遇到过这样的情况:变量只是在.m文件的方法中定义,没有任何声明,并且相同对于方法,直接写入.m文件但没有声明的方法,它们工作正常。
那么@ property / @ synthesize对于变量和声明头文件中的方法有什么意义呢?这与范围有什么关系?
答案 0 :(得分:3)
您所谈论的内容并未引用变量的声明,而是通过getter和setter从类外部公开它。
@ property / @ synthesize只是一个自动创建两个
方法的快捷方式- (void) [class setVariable:(type)var]
- (type) [class variable]
可以设置并从其他类中获取变量。
并非每个变量都需要在课堂外设置或获取。
答案 1 :(得分:1)
标题(.h)文件应包含您希望其他类了解此类的内容。类扩展 - .m文件中的接口部分 - 是私有声明的好地方。 (如果在使用之前定义了一个方法,那么该方法可以作为一个声明。它不是最优的,但它可以工作。)
答案 2 :(得分:1)
Objective-C中有三大类变量:
声明并合成属性时,会为您创建实例变量。另一方面,局部变量在代码块的范围内声明,不能通过属性声明。