一、 点语法 通过点语法可以快速的存取数据,例如有一个Person类 @implementation Person - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } @end Person *p = [Person new]; p.age = 10; // 该语句在编译的时候会被替换为[p setAge:10]; NSLog(@"age=%d",p.age); // p.age在编译的时候会被替换为[p age]; 点语法里,有赋值的为setter,没有的为getter 二、 成员变量作用域 @public : 在任何地方都能直接访问对象的成员变量 @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private) @protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected) @package : 只要处在同一个框架中,就能直接访问对象的成员变量 @interface和@implementation中不能声明同名的成员变量 作用域代码如下: @public // 在任何地方都能直接访问对象的成员变量 int _age; @private // 只能在当前类的对象方法中直接访问 int _height; @protected // 能在当前类和子类的对象方法中直接访问 int _weight; 三、 @property的使用 @property会在编译的时候自动为成员变量生成setter和getter的声明和实现方法 例如 @property int age; @synthesize会在编译的时候为成员变量自动生成setter和getter的实现方法,如果没有定义该成员变量,则会自动生成@private类型的变量 例如 @synthesize age = _age; 四、 id类型 id为Object-C对象的通用类型,也就是说可以用id来指向何对象 例如: id p = [Personnew]; id定义在运行期数据库的头文件里面 typedef structobje_object{ Class isa; } *id 由于id在定义时就已经是指针类型,所以指向对象时不用加“*”。
|