一、点语法本质
- “点语法”本质是“方法调用”
- 当使用“点语法”时,编译器会自动展开称相应的方法
- id类型的对象不能用 点语法
1 //方法调用
2 Student *stu = [[Student alloc] init];
3 [stu setAge:10];
4 int age = [stu age];
5 //-----------------------------我是华丽分割线-----------------------------
6 //点语法
7 stu.age = 10;
8 int age = stu.age;
二、成员变量的作用域
- @public : 在任何地方都能直接访问对象的成员变量
- @private : 只能在当前类的对象方法中直接访问 ( @implementation 中默认是 @private )
- @protected : 可以在当前类及其字累的对象方法中直接访问 (默认就是 @protected )
- @package : 只要处在同一个框架中,就能直接访问对象的成员变量
- @interface 和 @implementation 中不能声明同名的成员变量
- 没有 @interface ,只有 @implementation ,也可以开发同一个类
三、@property 和 @synthesize 、setter 和 getter 及使用细节
- @property 用在 @interface 中,用来自动生成 setter 和 getter 的声明
- @synthesize 永在 @implementation 中,用来生成 setter 和 getter 的实现
- @synthesize 细节:1> @synthesize age = _age;(setter 和 getter 实现中会访问成员变量 _age,如果成员变量 _age 不存在,就会自动生成一个 @private 的成员变量 _age )
- 2> @synthesize age;(setter 和 getter 实现中会访问成员变量 age,如果成员变量 age 不存在,就会自动生成一个 @private 的成员变量 age)
- 3> 若手动实现了 setter 方法,编译器就只会自动生成 getter 方法
- 自从 Xcode4.4 后,@property 就独揽了 @sy