2012-08-05 138 views
2

我开始与obj-c,并有几件事我没有得到。声明或不声明在目标c

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

那么@ property/@合成变量和声明头文件中的方法有什么意义?这与范围有关吗?

+0

所有的实例变量不需要做成属性。 – 2012-08-05 13:26:06

回答

3

你所谈论的是不是提到了声明的变量通过一个getter和一个setter从类之外揭露它。

的@财产/ @合成只是一个快捷方式自动创建两个方法,这是

  • - (void) [class setVariable:(type)var]
  • - (type) [class variable]

,可以设置和获取来自其他类的变量。

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

1

头文件(.h)文件应该包含你想要的其他类要知道这个类的其他类。类扩展 - .m文件中的接口部分 - 是私有声明的好地方。 (如果一个方法是使用之前定义的,即作为声明它不是最佳的,但它的工作原理。)

1

有Objective-C中的变量三大类:

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

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