美文网首页iOS Developer
OC中的初始化方法

OC中的初始化方法

作者: 大侠走一波 | 来源:发表于2016-04-06 21:14 被阅读497次

要讲初始化方法,先来一点面向对象语言中继承的概念:

继承的概念 :继承父类的所有的实例变量和方法,比如:小学生类 -> 学生类->人类

    所以当我们新写的一个类继承自一个原有的类的时候,我们也就继承了原有类的实例变量,所以 只写新类特有的实例变量。例如:人类中有一个『姓名』的实例变量,所以学生类中就可以不用写『姓名』这个实例变量,直接写特有的 例如『语文成绩』等。

继承具有传递性  小学生类 -> 学生类->人类,obviously

在子类中,进行父类方法的重载, 声明可以不用写,直接在.m文件中修改

一个类中普通方法的执行顺序:  

先从本类查找对应方法,如果本类有,则执行本类方法,不再继续查找,如果本类没有,则往父类查找,直到找到,不再继续查找,执行对应方法。

初始化方法:特有的关键字init

所谓初始化方法,就是我们要新得到一个类的一个对象,在OC中使用会有这样的形式

    [Person alloc] init] , alloc 在内存中开辟一块空间,init初始化 .即就是alloc相当于买地皮,init相当于盖房子

初始化方法从上往下(从父类开始)

使用super关键字 super代表一个本类对象调用父类方法

[super method]; 调用父类方法

self关键字在减号(实例)方法代表本类的一个对象

-(instancetype)init{

//初始化父类

self = [super init];

//对父类结果进行判断,如果初始化成功,则继续初始化本类特有实例

if (self) {

//初始化本类实例变量

_grade = @"";

}

return self;

}

指定初始化方法

初始化所有的实例变量,即就是让你的对象创建好的时候就具有一些基本的属性

-(instancetype)initWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height sex:(NSString *)sex;

便利构造器 alloc init步骤的一步到位

返回值最好采用instancetype ,返回你对应类型的对象

+(instancetype)personWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height sex:(NSString *)sex{

Person *person = [[Person alloc]initWithName:name age:age height:height sex:sex];

return person;

}

打印对象的所有实例变量 重写description 方法()

有时候我们需要打印特定的格式信息出来,例如 姓名= "小明",年龄= 23,电话 = 10086 ,要打印出这样的格式,我们就得重写这个方法。此方法是从所有类的父类NSObject 类中继承而来的

一次性的打印该对象的所有实例变量

-(NSString *)description{

NSString *str = [NSString stringWithFormat:@"name = %@,age = %ld,height = %.2f,sex = %@,school = %@,score = %.2f",_name,_age,_height,_sex,_school,_score];

return str;

}

相关文章

  • Swift中重写重载构造(初始化)方法

    构造方法是一个类创建对象最先也是必须调用的方法, 在OC中, 我们更习惯称这类方法为初始化方法. OC中的初始化方...

  • WkWebView和JS交互

    JS调用OC方法 oc中初始化WKWebView对象,进行相应的配置 JS中定义给oc传参的方法,注意sendMe...

  • deinit析构函数

    init 构造函数,初始化方法 deinit 析构函数,反初始化方法 deinit 和OC中的 dealloc 一...

  • Ios-细节二:理解`NS_DESIGNATED_INITIAL

    NS_DESIGNATED_INITIALIZER(指定初始化器)。在OC中,对于多个方法实现初始化的时候,会指定...

  • From Objective-C to Ruby(4)-类和模块

    类 定义类 OC: ruby: 初始化方法 OC: ruby: 实例变量和属性 OC: ruby: 类方法和对象方...

  • iOS(oc)与vue交互

    1、oc调用vue方法 需要暴露方法 2、oc 调用vue方法 wkwebview代理设置 初始化wkwebvie...

  • swift和OC初始化方法的异同

    1.OC的初始化方法并不能保证所有的成员变量都初始化,而swift中的初始化方法会要求所有的非Optional成员...

  • OC中的初始化方法

    要讲初始化方法,先来一点面向对象语言中继承的概念: 继承的概念 :继承父类的所有的实例变量和方法,比如:小学生类 ...

  • iOS WKWebView与JS交互

    1.OC调用JS方法 2.JS调用OC的方法 1.初始化WKWebView时,调用addScriptMessage...

  • init和viewDidLoad

    init方法 init方法是OC对象初始化的方法,所有继承自NSObjct的类都有init方法。 当调用类的初始化...

网友评论

    本文标题:OC中的初始化方法

    本文链接:https://www.haomeiwen.com/subject/rpsmlttx.html