黑马程序员——OC语言 核心语法(2)
(以下内容是对黑马苹果入学视频的个人知识点总结)
(一)id
1)简介:万能指针,能指向任何OC对象,相当于NSObject *
id类型的定义
typedef struct objc_object {
Class isa;
} *id;
2)使用注意
// 注意:id后面不要加上*
id p = [Person new];
3)局限性
调用一个不存在的方法,编译器会马上报错
1 int main(int argc, const char * argv[]) 2 { 3 Person *p = [Person new]; 4 5 // 点语法的本质还是方法调用 6 p.age = 10; // [p setAge:10]; 7 8 int a = p.age; // [p age]; 9 10 p.name = @"Jack"; 11 12 NSString *s = p.name; 13 14 NSLog(@"%@", s); 15 16 return 0; 17 }
(二)构造方法
1)new的拆分两部曲
首先分配内存(alloc)再初始化(init)
1 Person *p = [[Person alloc] init];
2) init方法的重写
想在对象创建完毕后,成员变量马上就有一些默认的值,就可以将init方法的重写
1 - (id)init 2 { 3 if (self = [super init]) 4 { 5 _age = 10; 6 } 7 return self; 8 }
3)自定义构造方法
构造方法的一些规范
①返回值是id类型
②方法名都以init开头
1 - (id)initWithAge:(int)age { 2 if (self = [super init]) { 3 _age = age; 4 } 5 return self; 6 }
传递多个参数进行初始化
1 - (id) initWithAge:(int)age andNo:(int)no;