init方法的重写与自定义

1.为什么要重写或是自定义init方法?

系统默认初始化为0(基本数据类型)或是空(指针数据类型),但是我们想要自己定义一个想要的初始值,这个时候就要重写或者自定义init方法。

2.做法:

先声明一个属性变量

(1)重写

(2)自定义(比较灵活,我们一般用这种)

原文地址:https://www.cnblogs.com/frosting/p/9426859.html

时间: 2024-11-13 09:31:34

init方法的重写与自定义的相关文章

iOS开发之oc(八)--小知识补充 init方法补充

小知识补充 一. id 1. 简介 万能指针,能指向任何OC对象,相当于NSObject * id类型的定义 typedef struct objc_object { Class isa; } *id; 2. 使用 // 注意:id后面不要加上* id p = [Person new]; 3. 局限性 调用一个不存在的方法,编译器会马上报错 二. .h和.m文件的抽取 1)每个类分布在不同文件中 2)类的声明放在.h文件,类的实现放在.m文件 3)若想使用某个类,就包含某个类的.h声明文件 三.

[Objective-c 基础 - 2.7] 构造方法、重写init方法

A.id 万能指针,可以指向任何对象,实质是NSObject的指针,使用的时候不用加上* B.NSObject中得类方法new 1.完整地创建一个可用对象步骤 (1)分配存储空间 + alloc (2)初始化 - init 1 // 1.调用+alloc分配存储空间 2 Person *p1 = [Person alloc]; 3 // 2.调用-init进行初始化 4 Person *p2 = [p1 init]; 5 // 同时进行分配存储空间和初始化 6 Person *p3 = [[Pe

IOS开发中重写init方法使用需谨慎

IOS开发中重写init方法使用需谨慎 今天在写一个小软件的时候出现一点问题,这个软件的功能是搜索全国学校,首页就是搜索输入框,在框中输入完要查询的学校所在省份,点击buttom后就会跳转到对应的视图控制器中,然后把搜索结果呈现在一个TableView上,但是我在调试时,每次输入完然后点击搜索按钮时,弹出结果列表总是空的,我需要返回到首页再点击一次搜索才会出现结果,而且我在首页更改搜索关键字之后,点击搜索,结果还是上次的搜索结果,必须返回点击一次才会出现这次的搜索结果. 经过大神指点,原来这个问

OC重写init方法

在创建一个对象的时候我们经常会用到init方法,单单是init只能是初始化,当我们在初始化的时候想要给这个对象加上默认的东西的时候, 系统提供的init方法就不能满足我们的需要,这时,就需要我们自己去重写init方法: 通常在使用init方法的时候,系统先会在自己这个类中查询是否实现(重写)这个方法,如果没有实现,就会逐层向上面的父类查找,直到 找到实现了的init方法,其他方法的执行顺序也是这样. 1.首先创建一个Person 类和一个Car 类 2.在Car类里面定义属性(我们要的效果是输出

黑马程序员——OC学习小结------构造方法,分类,方法的重写,SEL

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.万能指针,能指向\操作任何OC对象 typedef (NSObject *) id; // id == NSObject 二.构造方法 1.完整地创建一个可用的对象: 1>分配存储空间  +alloc 2>初始化 –init init就是构造方法:用来初始化对象的方法,是个对象方法,- 开头 重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值 2.重写构造方法的注意点:

Swift中的init方法

摘要:Swift有着超级严格的初始化方法,不仅强化了designated初始化方法的地位,所有不加修饰的init方法都需要在方法中确保非Optional的实例变量被赋值初始化,而在子类中,也强制调用super版本的designated初始化. 我们在深入初始化方法之前,不妨先再想想Swift中的初始化想要达到一种怎样的目的. 其实就是安全.在Objective-C中,init方法是非常不安全的:没有人能保证init只被调用一次,也没有人保证在初始化方法调用以后,实例的各个变量都完成初始化,甚至如

IOS中init方法都做了什么事?

一.概述 在初始化使用init方法初始化时,会将以init开头的初始化方法,按顺序调用一遍.比如以下几个方法: 1 initWithFrame: 2 initWithNibName: 3 initWithStyle: PS:注意,在自定义Cell时,使用register注册一个Cell时,仅调用initWithStyle:方法.

iOS开发init方法解析

自定义的init方法,都必须调用父类的init方法. 一般情况下为: - (id)init { [super init]; xxx = xxx; } 通常情况下,这种模式可以满足绝大多数的需求,但是在少量情况下,需要一些特殊处理. 1,出于优化的考虑,init方法会释放已经分配了内存的对象,然后创建另一个新对象并返回之. 2,init方法在执行过程中发生了错误,所以会释放对象并返回nil. 对于1,苹果官网的做法是将父类init方法的返回值给self,对于2,苹果官网的做法是检测父类返回的对象是

OC小实例关于init方法不小心的错误

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute