文档章节

NsObject的load和initialize方法

Redding
 Redding
发布于 2014/04/23 17:07
字数 423
阅读 1631
收藏 1
点赞 1
评论 0

load--当类被引用进程序的时候会执行这个函数。

当父类和子类都实现load函数时,父类的load函数会被先执行。load函数是系统自动加载的,因此不需要调用父类的load函数,否则父类的load函数会多次执行

在Category中写load函数是不会替换原始类中的load函数的,原始类和Category中的load函数都会被执行,原始类的load会先被执行,再执行Category中的load函数。当有多个Category都实现了load函数,这几个load函数执行顺序不确定。

initialize--当类第一次被执行到的时候这个函数会被执行。

如果类包含继承关系,父类的initialize函数会比子类先执行。由于是系统自动调用,也不需要显式的调用父类的initialize,否则父类的initialize会被多次执行

假如这个类放到代码中,而这段代码并没有被执行,这个函数是不会被执行的。

Load or Initialize

这两个函数没有交集,也没有执行的先后顺序,他们各自遵循着各自的调用原则。因此在写逻辑的时候,不能有逻辑依赖load函数比initialize函数先行调用


使用场景:

将针对于类修改放在intialize中,将针对Category的修改放在load中。

但是假如我们是修改系统的类,一般会通过添加Category来添加功能,但是如果修改initialize会导致原生的intialize不会执行,所以放在load中会比较妥当。


本文转载自:http://www.cnblogs.com/biosli/p/NSObject_inherit.html

共有 人打赏支持
Redding
粉丝 14
博文 49
码字总数 22869
作品 0
南京
程序员
记录一下iOS开发中琐碎的点点_1

左侧边缘右滑推出控制器 实际上iOS7之后都是支持这个功能的. 导航控制器默认是支持这个功能的, 但是这个功能有个局限, 当导航控制器包含自定义 时候, 右滑pop的功能就会失效. 有个代理方法:...

hell03W ⋅ 2016/03/16 ⋅ 0

UIButton防止重复点击的方式

使用UIButton的enabled或userInteractionEnabled 使用UIButton的enabled属性, 在点击后, 禁止UIButton的交互, 直到完成指定任务之后再将其enable即可. 1234567891011121314151617181920 [bt...

冰泪_ ⋅ 2016/08/09 ⋅ 0

iOS类方法load和initialize详解

iOS开发中总能看到+load和+initialize的身影,网上对于这两个方法有很多解释,官方也有说明,但有些细节不够清楚,今天我们来详细扒一扒这两个方法. load Apple文档是这样描述的 文档地址:https:...

朱晓辉 ⋅ 2017/05/05 ⋅ 0

Objective-C 源码(二)+load 以及 +initialize

+load 关于+load方法是当类或者分类被添加到Objective-C runtime的时候被调用的,实现该方法可以让我们在类加载的时候,执行一些类相关的行为。子类的+load方法会在它的所有父类的+loa...

神补刀 ⋅ 2015/11/11 ⋅ 0

iOS - + initialize 与 +load

一、+ initialize 方法和+load 调用时机 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我们用它来初始化静态变量。 lo...

Karlon ⋅ 2016/05/09 ⋅ 0

Load和Initialize往死了问是一种怎样的体验?

2017.08.08 这个问题有点炒冷饭了,写了 demo 才更深入的了解这个问题,就当做个简单的笔记吧 一. Load和Initialize的往死了问是一种怎样的体验? Load 和 Initialize 先加载哪个? 父类和子...

si1ence ⋅ 2017/12/14 ⋅ 0

Runtime Method Swizzling开发实例汇总

前言:什么是Method Swizzling,在iOS开发中它有什么作用? 简单来说我们主要是使用Method Swizzling来把系统的方法交换为我们自己的方法,从而给系统方法添加一些我们想要的功能。该篇文章主...

秦无炎 ⋅ 2016/12/19 ⋅ 0

NSObject类了解

今天看一本书,偶然间看到关于继承的那一章。上面有一句话是这么说的:在OC中,允许定义自己的根类,但通常不这么做,而是希望利用现有的类。因此,我们所定义的类都是属于NSObject根类的派生...

睡醒的妞妞 ⋅ 01/10 ⋅ 0

《Effective Objective-C 2.0》笔记

1 了解 Objective-C 起源 Objective-C 使用“消息结构”而非“函数调用”。 使用“消息结构”的语言,其运行时所执行的代码由运行环境来决定。 使用“函数调用”的语言,则由编译器决定。 分...

JiandanDream ⋅ 05/11 ⋅ 0

Objective-C 源码(四) 再次看 Method Swizzling

Method Swizzling 的原理 先打开 objc-private.h 文件 在 235行可以看到 Method的定义: typedef struct method_t *Method; 然后在 objc-runtime-new.h 文件中第82行可以看到: struct metho...

神补刀 ⋅ 2015/11/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

阿里云云栖社区 ⋅ 12分钟前 ⋅ 0

Ubuntu部署django问题汇总

使用Anaconda3的Python3.6的pip安装UWSGI报错 原因是gcc版本不兼容,安装4.7并修改gccsudo apt-get install gcc-4.7sudo mv /usr/bin/gcc /usr/bin/gcc.baksudo ln -s /usr/bin/gcc-4.......

wuyaSama ⋅ 15分钟前 ⋅ 0

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

猫耳m ⋅ 15分钟前 ⋅ 0

Docker减肥小记

如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察 如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的镜像、容器、网络和数据卷… 1、查看...

寰宇01 ⋅ 26分钟前 ⋅ 0

微信小程序中如何使用WebSocket实现长连接(含完整源码)

本文由腾讯云技术团队原创,感谢作者的分享。 1、前言 微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架、组件以及 API,在这个平台上面的想象空间很大。腾讯云研究了一...

JackJiang- ⋅ 34分钟前 ⋅ 0

定制库到Maven本地资源库

1.如果只有定制库的JAR文件 下载链接如下:pdf.jar 2.使用命令转换成Maven本地资源 mvn install:install-file -Dfile=/Users/manager/Downloads/clj-pdf-2.2.33.jar -DgroupId=clj-pdf -Dar......

年少爱追梦 ⋅ 38分钟前 ⋅ 0

高仿springmvc之xuchen-mvc

package org.mvc.framework.servlet; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.......

徐志 ⋅ 40分钟前 ⋅ 0

关于自定义URLStreamHandler的一次踩坑

关于自定义URLStreamHandler的一次踩坑 20180625 lambo init 说明 一般自定义实现url的协议解析.方案为实现URLStreamHandler.实现其 openConnection 就可以了, 如果我们执行 new URL("xx://...

林小宝 ⋅ 41分钟前 ⋅ 0

【SM2证书】利用BC的X509v3CertificateBuilder组装X509国密证书

演示证书文件 链接: https://pan.baidu.com/s/1ijHNnMQJj7jzW-jXEVd6Gg 密码: vfva 所需jar包 <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15on --> <dependenc......

小帅帅丶 ⋅ 42分钟前 ⋅ 0

用Calendar 实现 计算 一段时间的毫秒值

Calendar c=Calendar.getInstance();c.add(Calendar.MONTH, -1);int lastMonthMaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH)......

岸芷汀兰 ⋅ 46分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部