IOS学习(OC语言)知识点整理
一、类的初始化
1)init初始化方法(构造方法):一般和alloc一起调用,用于给成员变量初始化。
2)id类型:相当于C中的void*,可以指向任何对象,不能加*,类似.net或java中的泛型。
3)带参的初始化方法(自定义的初始化方法),是实例方法,必须以initWith开头 。
例如:-(id)initWithName:(NSString*)name andPrice:(float)price andPage:(int)page;
Book *b3=[[Book alloc]initWithName:@"iOS开发" andPrice:100 andPage:600];
4)初始化类时需要判断父类对象是否已经初始化成功只有当父类对象初始化成功了才可以给类成员赋值。
初始化方法三步原则:
1)调用父类的init方法。
2)初始化自己的成员变量。
3)返回self 对象。
实例代码:
1 -(id)init 2 { 3 //调用父类的方法初始化从父类中继承的成员变量 4 //super实际上是一个编译器符号,表示调用父类的方法 5 self=[super init]; 6 if(self!=nil){ //nil相当于c中的NULL,如果父类初始化成功,才可 以继续操作(实现成员变量的初始化) 7 _name=@"myBook"; 8 _page=300; 9 _price=50; 10 } 11 return self;//返回当前对象 12 }
5)点语法的介绍,点语法本质是一个方法的调用;点语法调用的方法一般只能是一个参数的实例方法。
6)@property声明属性,会自动生成对应属性的set,get方法 ; 功能相当于以下2个方法的声明
1、-(void)setName:(NSString *)setname;
2、-(NSString *)getname;
7)self的说明,如果是在实例方法中self代表当前调用此方法的实例对象,如果是在类方法中self代表当前所在类的类对象。
8)@synthesize合成方法体 会自动生成property所对应元素的方法体,@synthesize name =_name;表明方法是操作成员变量_name,如果_name不存在,
会自动创建一个 成员变量_name;如果要使用@synthesize,必须有@property; 但有@property 可以没有@synthesize。
9)@property 可以同时声明同种数据类型的多个属性;例如:@property(nonatomic,assign)int age,ID。
10)@property的修饰符介绍:
1、readonly:只读,只生成getter方法,没有setter方法
2、 readwrite:可读写,会生成setter和getter方法,默认是readwrite
3、nonatomic:不需要考虑数据同步,单线程应用程序中效率较高
4、atomic:需要考虑线程同步,效率低,默认是这种
与内存管理有关:
5、assign:直接赋值,一般用于int、float、double、long等基本类型
6、retain:一般用于对象
7、copy:一般用于字符串
8、默认是readwrite、atomic、assign
二、继承
1)子类继承父类后子类可以使用即拥有父类的所有非私有的属性和方法,同时子类也可以重写父类的方法。
2)重写父类方法时方法名以及返回值、参数都必须和父类方法保持一致。