// // Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property int age; @end
// // Person.m #import "Person.h" @implementation Person /* // 重写init方法, 在init方法中初始化成员变量 // 注意: 重写init方法必须按照苹果规定的格式重写, 如果不按照规定会引发一些未知的错误 // 1.必须先初始化父类, 再初始化子类 // 2.必须判断父类是否初始化成功, 只有父类初始化成功才能继续初始化子类 // 3.返回当前对象的地址 - (instancetype)init { // 1.初始化父类 // 只要父类初始化成功 , 就会返回对应的地址, 如果初始化失败, 就会返回nil // nil == 0 == 假 == 没有初始化成功 self = [super init]; // 2.判断父类是否初始化成功 if (self != nil) { // 3.初始化子类 // 设置属性的值 _age = 6; } // 4.返回地址 return self; } */ /* - (instancetype)init { self = [super init]; // self == nil == 0 if (self) { // 初始化子类 _age = 6; } return self; } */ - (instancetype)init { // self = [super init]; // 注意: 不要把 = 号写为 == // 一定要将[super init]的返回值赋值给self if (self = [super init]) { // 初始化子类 _age = 6; } return self; } @end
// // main.m // 构造方法基本概念 #import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { /* 在OC中init开头的方法, 我们称之为构造方法 构造方法的用途: 用于初始化一个对象, 让某个对象一创建出来就拥有某些属性和值 */ Person *p = [[Person alloc] init]; // p.age = 6; NSLog(@"%i", p.age); Person *p2 = [[Person alloc] init]; // p2.age = 6; NSLog(@"%i", p2.age); Person *p3 = [[Person alloc] init]; // p3.age = 6; NSLog(@"%i", p3.age); return 0; }