- 点语法:
1).点语法本质:调用set和get 方法,当使用点语法时,编译器会自动展开相应的方法。实例如下:stu.age = 10 ⇒[stu setAge:10]
左右两者是等价的。int age = stu.age;⇒int age = [stu age];
2).判断set和get的方法:判断是set和get的方法时看是否赋值了,赋值了就是set方法。
3).成员变量的作用域:
a. @public:在任何地方都能够访问成员变量(前提是有对象);
b. @private:只能在当前类的对象方法中直接访问,但子类可以通过set和get方法简介访问。(如果在.m文件中定义成员变量<即在@implementation中定义成员变量>,成员变量作用域默认是私有的);
c. @protected:能在当前类和子类的对象方法中直接访问,默认是@protected(没写关键词);
d. @package:介于@public和@private之间,只要处在同一个框架中,就可以直接访问对象的成员变量。
4).使用注意:
a. @interface和@implementation之间都可以声明成员变量,但不能声明同名的成员变量(一般成员变量只在@interface和@end中声明!)
b.oc 是单继。 - @property
1).作用:自动生成某个成员变量的set和get文件的声明。
2).代码实现:
@property int age; //等价于⇒ -(void)setAge: (int) age; -(int)age;
3).使用注意:
a. 使用在@interface @end中;
b. 自从Xcode4.4后,@property可以同时生成set和get的声明和实现。
- @systhesize
1).作用:自动生成set方法和get方法的实现。
2).代码实现:
注:如果没有_age这个成员变量,使用代码后,就会自动生成_age成员变量。@synthesize age = _age; //等价于⇒ -(void)setAge: (int) age { _age=age; } -(int)age { return _age; }
3).使用注意:
a. @synthesize age:如果不存在age这个成员变量,就会自动生成@private类型的age变量;
b. @synthesize age=_age;这样的话,是访问成员变量_age;
c. 用在@implementation …… @end 中;
d. 默认情况下,set和get方法中的实现会去访问下划线_开头的成员变量;
e. 如果手动实现了set方法,编译器就会自动生成get方法;如果手动实现了get方法,编译器就会自动生成set方法;如果同时实现了set和get方法,编译器就不会自动生成不存在的成员变量。 - id
1).概述:id是一种类型,是万能指针,能操作任何OC对象。可以理解为id 等价于NSObject *。
2).实例:
注:id只用于对象。id d = [Person new];
3).使用注意:id 后面不能加 “ * ” !!!!