iOS 简单理解类的本质
1.类也是个对象
- 类是一个对象是Class类型的对象简称类对象
- Class类型的定义
// 一个任意的类型,表示一个Objective-C类
typedef struct objc_class *Class;
- 类名就代表着类对象,每个类只有一个类对象
- 获取类对象
// 获取类对象两种方式person1 和 person2
Class person1 = [Person class]; Person *p = [Person new];
Class person2 = [p class]; // 类对象调用类方法
Person *person3 = [person1 new];
2.类的加载方法和初始化方法
+ (void)load; // 在类加载的时候调用一次
+ (void)initialize; // 在使用某个类的时候调用一次
+load方法:
- 在程序启动的时候会加载所有的类和分类,并且自动调用所有类和分类的+load方法
- 程序启动先加载父类然后是子类,也就是先调用父类的+load方法再调用子类的+load方法
- 先加载原始类再加载分类
- 不管程序运行有没有用到这个类,都会调用+load加载
+initialize方法:
- 在第一次使用某个类时比如创建对象,都会调用一次+initialize方法
- 一个类只会调用一次+initialize方法,先调用父类再调用子类的initialize方法
iOS 简单理解类的本质的更多相关文章
- 【原创】分布式之数据库和缓存双写一致性方案解析(三)  前端面试送命题(二)-callback,promise,generator,async-await  JS的进阶技巧  前端面试送命题(一)-JS三座大山  Nodejs的运行原理-科普篇  优化设计提高sql类数据库的性能  简单理解token机制
		[原创]分布式之数据库和缓存双写一致性方案解析(三) 正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ... 
- OC-私有方法,构造方法,类的本质及启动过程
		总结 标号 主题 内容 一 OC的私有方法 私有变量/私有方法 二 @property 概念/基本使用/寻找方法的过程/查找顺序 三 @synthesize @synthesize概念/基本使用/注意 ... 
- 我对XCode Objective-c Cocoa的简单理解
		我对XCode Objective-c Cocoa的简单理解 Xcode Xcode说的通俗一点就是开发OS X 和 iOS 应用程序的. 如果我们想要认真点说 ,Xcode 是运行在操作系统Mac ... 
- 转 PV操作简单理解
		传送门 PV操作简单理解 进程通常分为就绪.运行和阻塞三个工作状态.三种状态在某些条件下可以转换,三者之间的转换关系如下: 进程三个状态之间的转换就是靠PV操作来控制的.PV操作主要就是P操作.V操作 ... 
- iOS --runtime理解
		iOS~runtime理解 Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下,一为 查阅方便二为 或许能给 ... 
- OC-@property、self及类的本质
		让代码书写更加简便 --1-- 设置器和访问器 1.1 setter 1.2 getter --2-- 类的本质 2.1 类类型的对象 2.2 类的本质 2.3 如何获取类对象 2.4 类对象的使用 ... 
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
		简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ... 
- Deep learning:四十二(Denoise Autoencoder简单理解)
		前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Be ... 
- 我们为之奋斗过的C#-----C#的一个简单理解
		我们首先来简单叙述一下什么是.NET,以及C#的一个简单理解和他们俩的一个区别. 1 .NET概述 .NET是Microsoft.NET的简称,是基于Windows平台的一种技术.它包含了能在.NET ... 
随机推荐
- java System 常用方法
			一.System.currentTimeMillis() 获取系统当前时间,毫秒 二.System.getProperty Java.version Java 运行时环境版本 java.vendor ... 
- 强烈推荐android studio用的几个插件,androidstudio
			不懂安装studio插件,看参考博文:android stuido插件安装:http://blog.csdn.net/liang5630/article/details/46372447 1.Butt ... 
- ZZTHX-Androidannotations框架联想
			我们首先来看一段代码: 在android开发中findViewById是最常用的一个方法,用来实例化页面上的控件,基本上每个控件都需要调用一次的,加入我们页面上有100个需要使用,那么findView ... 
- sqlninja 说明 (转)
			首先来介绍一下sqlninja的优点. 一个专门针对Microsoft SQL Server的sql注入工具 可找到远程SQL服务器的标志和特征(版本.用户执行的查询.用户特权.xp_cmdshell ... 
- C++ 构造过程和析构过程
			1.C++构造和析构的过程,类似于穿衣脱衣的过程.穿衣是:先穿内衣,再穿外套.脱衣是:先脱外套,再脱内衣.C++构造过程:首先调用父类构造方法,再调用子类构造方法.C++析构过程:首先调用子类析构方法 ... 
- Windows Phone-框架结构和启动过程
			上一篇文章介绍了Windows Phone的开发环境和一个简单的Windows Phone程序的演示和结构,这一篇文章要深入一点,介绍Windows Phone的框架结构和程序启动的过程. 一 Win ... 
- 如何限制input只能输入数字
			在input上增加onkeyup和onafterpaste事件,事件中用正则表达式替换其它字符,测试没有问题. <input type="text" value=" ... 
- Delphi获取目录下所有文件名
			//获取一个文件夹下的所有文件 //不包括文件夹里面的文件 //ListBox1.Items:= searchfile('Z:\'); //注意,path后面要有'\'; function Sear ... 
- mac os升级为 Yosemite 10.10 后不能创建javaproject
			出现这样的情况可能是因为mac系统升级导致JAVA的安装路径发生改变(Xcode升级后也出现模拟器位置改变的情况,不要奇怪) 之前安装的eclipse就自然找不到SDK的路径了,所以会捆绑失败 接下来 ... 
- python生成简单的验证码
			#coding=utf-8 from PIL import Image, ImageDraw, ImageFont, ImageFilter import random # 随机字母: def rnd ... 
