本帖最后由 ZXY66452 于 2015-12-1 16:00 编辑
一、成员变量的作用域@public :在任何地方都能直接访问对象的成员变量
@private:只能在当前类的对象方法中访问
@protected(默认):能在当前类和子类的对象方法中直接访问
@package:只要处在同一个框架中,就能直接访问对象的成员变量
@interface和@implementation中不能声明同名的成员变量
在@implementation中声明变量,默认是@private的
二、点语法- 点语法的本质还是方法调用,不是调用成员变量
- 编译器遇到点语法时,会把点语法转成方法
//@property int ID; - (void) setId:(int)newId; - (int)id;
//@synthesize ID; - (void) setId:(int)newId { _id = newId; } - (int)id { return_id; } 调用 dog.id =1; //[dog setId]; NSLog(@"%d",dog.id); //[dog id];
三、构造方法- 用来初始化对象的方法,对象方法,以减号开头
- 为了让对象创建出来,成员变量就会有一些固定的值
- 重写构造方法的注意点:
- 先调用父类的构造方法([super init])
- 再进行子类内部成员变量的初始化
- + alloc 方法
- - init 方法
- 实际上是这么创建对象的
Person *p5 = [[Person alloc] init]; //先分配存储空间,再进行初始化 重写NSObject类的init方法(无参数) - (id)init { //一定要调用回super得init方法:初始化父类中声明的一些成员变量和其他属性 if (self = [super init]) { //初始化成功 _age =10; } returnself; } 带参数的构造方法 - (id)initWithName:(NSString *)name andAge:(int)age { if (self = [super init]) { _age = age; _name = name; } returnself; } |