[Objective-c 基础 - 2.9] 类的本质

A.概念

类对象:类也是一个对象,是Class类型的对象

实例对象:创建的对象,有一个isa指针指向类

B.操作

获取内存中的内对象

1.

使用实例对象获取

Class c = [p class];

不必使用*

2.

使用类获取

Class c = [Person class];

C.类的加载

1.先加载父类,再加载子类,加载完会调用+load方法

2.类和分类的加载方法+load都会被调用

3.第一次使用类的时候,会调用+initialize方法

4.先加载父类,再加载子类,最后加载分类(依次调用+load方法),被编译就会被加载

5.先初始化父类,再初始化子类(调用+initialize方法),第一次使用的时候才会被初始化

6.类和分类的+initialize方法调用跟普通方法一样,优先调用分类的;存在多个分类并且都覆盖了+initialize方法的时候,调用最后被编译的。

—>

+load:类的加载方法===>父类、子类、分类的都会被调用

+initialize:类被第一次使用时调用的初始化方法==>父类、子类的都被调用,分类具有优先级比较

创建一个Student对象并初始化:

继承关系: NSObject -> Person -> Student -> GoodStudent

2014-11-13 23:51:16.600 06-类的本质[8205:303] Person被加载
2014-11-13 23:51:16.602 06-
类的本质[8205:303] Student被加载
2014-11-13 23:51:16.602 06-
类的本质[8205:303] GoodStudent被加载
2014-11-13 23:51:16.603 06-
类的本质[8205:303] Student+Study被加载
2014-11-13 23:51:16.603 06-
类的本质[8205:303] Student+Learn被加载
2014-11-13 23:51:16.604 06-
类的本质[8205:303] Person被第一次使用
2014-11-13 23:51:16.604 06-
类的本质[8205:303] Student+Learn被第一次使用
Program ended with exit code: 0

时间: 2024-10-22 12:36:19

[Objective-c 基础 - 2.9] 类的本质的相关文章

OC基础--类的本质

类的本质: 类的本质其实也是一个对象(类对象),只要有了类对象, 将来就可以通过类对象来创建实例对象 程序中第一次使用该类的时候被创建,在整个程序中只有一份.此后每次使用都是这个类对象,它在程序运行时一直存在. 类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本,继承层次,以及消息与函数的映射表等 类对象代表类,Class类型,保存了当前对象所有的对象方法,当给一个实例对象发送消息的时候, 会根据实例对象中的isa指针去对应的类对象中查找 如果消息的接收者是类名,则类名代表类对象

张超超OC基础回顾01_类的创建,申明属性,以及本质

1.如何编写类的声明 以@interface开头 , 以@end结尾, 然后再class name对应的地方写上 事物名称, 也就是类名即可 注意: 类名的首字符必须大写 声明一个类的目的就是为了告诉系统, 我们这个类中有哪些属性和行为 OC类声明中属性只能在写@interface和@end之间的{}中 注意: 编写OC类属性的时, 建议将所有属性的名称前面都加上"_",这个是规范,记住就行了. 类名后面的 :NSObject 是为了让我们的Iphone类具备创建对象的能力,也就是说,

黑马程序员— OC核心语法之构造方法、Category分类、类的本质、description和SEL

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 上一章我们学习了OC的一些核心语法,初步了解了OC作为一门开发语言的一些较为深层次的知识.本章我们继续学习OC的核心语法,主要包括OC的构造方法,Category分类,类的本质及深入研究,以及description关键字和SEL关键字. 第一讲     构造方法 1. 构造方法 构造方法是用来初始化对象的方法,是一个对象方法,以减号"-"开头,构造方法其实就是init方法,初始化完毕

OC语言类的本质和分类

OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一个方法 Study方法的实现 测试程序: (二)分类的使用注意 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警

PHP 面向对对象基础(接口,类)

介绍PHP面向对象的基础知识 1. 接口的定义interface ,类定义class,类支持abstract和final修饰符,abstract修饰为抽象类,抽象类 不支持直接实例化,final修饰的类/方法不能被继承/方法重写.2. 接口的实现通过implements,类继承extends interface IShape{ function draw_core(); }; class PathShape implements IShape{ public function draw_core

OC类的本质及分类

(一)类的本质 类对象(class object)与实例对象(instance object) 类本身也是一个对象,是class类型的对象,简称“类对象”. 在/usr/include/objc/objc.h 和 runtime.h 中找到对 class 与 object 的定义: Class 是一个 objc_class 结构类型的指针;而 id(任意对象)是一个 objc_object 结构类型的指针, 其第一个成员是一个 objc_class 结构类型的指针.注意这里有一关键的引申解读:内

Java基础之String类的细节问题

本文转载自http://sarin.iteye.com/blog/603684/ 先来看一个例子,代码如下: Java代码   public class Test { public static void main(String[] args) { String str = "abc"; String str1 = "abc"; String str2 = new String("abc"); System.out.println(str == 

黑马程序员----类的本质

类的本质: 类本身也是一个对象,是一个Class类型的对象,简称类对象: 1.内存中创建对象的本质: 利用Class  创建一个 Person类对象: 利用person类对象,创建Person类型的对象. 2.类对象及对象内存细节: 3.类对象的其他使用: 调用类方法: 1.利用类名调用类方法: 2.利用类对象调用类方法: 创建对象:

Android基础之——CountDownTimer类,轻松实现倒计时功能

在发现这个类之前,一直是用的handler,子线程发消息,UI线程进行倒计时的显示工作.前几天在做一个倒计时显示的时候发现了这个类,用起来很方便 翻看了下源码,内部已经帮我们实现了handler的子线程操作 CountDownTimer这个类用起来很简单,两个参数,几句代码搞定,如下: CountDownTimer(long millisInFuture, long countDownInterval) 构造函数有两个参数,第一个millisInFuture是指要倒计时的总时间,单位是long