在目标c中声明或不声明

时间:2012-08-05 13:23:59

标签: objective-c variables declaration

我从obj-c开始,有一些我没有得到的东西。

首先是我(哦,我来自AS3编码视角)认为如果你想在你的类中有一个变量,你需要先用@property运算符在头文件中声明它,然后@在.m文件中合成,你也必须在头文件中声明方法,但是我遇到过这样的情况:变量只是在.m文件的方法中定义,没有任何声明,并且相同对于方法,直接写入.m文件但没有声明的方法,它们工作正常。

那么@ property / @ synthesize对于变量和声明头文件中的方法有什么意义呢?这与范围有什么关系?

3 个答案:

答案 0 :(得分:3)

您所谈论的内容并未引用变量的声明,而是通过getter和setter从类外部公开它。

@ property / @ synthesize只是一个自动创建两个

方法的快捷方式
  • - (void) [class setVariable:(type)var]
  • - (type) [class variable]

可以设置并从其他类中获取变量。

并非每个变量都需要在课堂外设置或获取。

答案 1 :(得分:1)

标题(.h)文件应包含您希望其他类了解此类的内容。类扩展 - .m文件中的接口部分 - 是私有声明的好地方。 (如果在使用之前定义了一个方法,那么该方法可以作为一个声明。它不是最优的,但它可以工作。)

答案 2 :(得分:1)

Objective-C中有三大类变量:

  • 实例变量
  • 静态范围变量(静态,全局和函数静态)
  • 自动范围变量(本地和函数/方法参数)

声明并合成属性时,会为您创建实例变量。另一方面,局部变量在代码块的范围内声明,不能通过属性声明。