给大家举个例子看看,应该就会明白的.
- 声明一个myButton属性,在.m文件中可以直接的使用_myButton实例变量,也可通过属性self.myButton都是一样的.
注意这里的self.myButton其实是调用的myButton属性的getter/setter方法.这与C++中点的使用是有区别的,C++中的点可以直接访问成员变量(实例变量).
- 声明的一个属性,编译器会自动为你生成以下划线开头的实例变量,不需要自己手动再去写实例变量。而且也不需要在.m文件中写@synthesize myButton;也会自动为你生成setter,getter方法。@synthesize的作用就是让编译器为你自动生成setter与getter方法。
@synthesize 还有一个作用,可以指定与属性对应的实例变量.
如果在一个类的.m文件中出现self.name这样的表达式是错误的.xcode会提示你使用->,改成self->name就可以了.因为oc中点表达式是表示调用方法,如果没有声明name这个属性就不能调用.
oc语法关于点表达式的说明:”点表达式(.)看起来与C语言中的结构体访问以及Java语言汇总的对象访问有点类似,如果点表达式出现在等号 = 左边,该属性名称的setter方法将被调用。如果点表达式出现在右边,该属性名称的getter方法将被调用。”
简单的说就是:在oc中点表达式其实就是调用对象的setter和getter方法的一种快捷方式,而且编译器会直接给属性提供对应的实例变量(当然也可以手动指定该属性所对应的实例变量)和getter/setter方法.