OC类的本质(类对象)

类的本质

类的本质是类对象

类的加载初始化 + load , - initialize

+ load方法

当程序启动的时候,就会加载一次项目中的所有类,类加载完就会调用load方法

先加载父类然后加载子类,最后加载分类的load也会加载

- initialize方法

当第一次用到类的时候调用

先初始化父类在初始化子类

分类的initailize会覆盖原来类的initailize方法

NSLog方法打印对象或类时调用剖析

默认情况下NSLog 和%@输出对象时,结果是:<类名:内存地址>

- description

1. 当要输出对象时会调用对象的 -description方法

2. 拿到 –description方法的返回值(NSString *) 显示到屏幕上

3. –description 方法默认返回是 “类名+内存地址”

+ description

1. 当要输出类时会调用类的 +description方法

2. 拿到 +description方法的返回值(NSString *) 显示到屏幕上

时间: 2024-10-10 04:36:07

OC类的本质(类对象)的相关文章

OC基础--类的本质

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

OC语言类的本质和分类

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

OC类的本质及分类

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

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

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

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

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

黑马程序员— OC基本语法、类和对象、三大特性

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一讲     OC简介及基本语法 Objective-C简称OC是在C语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,也就是可以在OC代码中混入C语言代码,甚至是C++代码.可以使用OC开发Mac OS X平台和IOS平台的应用程序.简单的介绍了一下OC,下面我们来看看OC的基本语法,学习OC之前我们先学习了C语言,因为OC是在C语言的基础上的一门开发语言,因此OC的很多基本语法

oc基础第一天---类的方法,类与对象

1. 如何为类定义行为. 刚刚我们聊的是如何为类定义特征. 如何定义行为? 行为就事1个功能 也就事1个函数. OC中把行为叫做方法. 实际上和函数是一样的 代表1个功能模块. 2. 为类定义无参数的方法. 类的方法也分为两个部分. a. 方法的声明 1). 位置: 写在声明类的大括弧的外边. 2). 声明的语法: - (返回值类型)方法名; - (void)sayHi; 这个方法的名字就叫做sayHi; b. 方法的实现. 1). 位置: 写在类的实现之中. 2). 实现的语法: - (返回值

iOS开发之oc(十)--类的本质、description、SEL

(一)类的本质 1.类也是个对象 其实类也是一个对象,是Class类型,简称“类对象”. // Class类型的定义 typedef struct objc_class *Class; // 类名就代表着类对象,每个类只有一个类对象 2.+load和+initialize +load >  在程序启动的时候会加载所有的类和分类,并调用所有类和分类的+load方法 >先加载父类,再加载子类:也就是先调用父类的+load,再调用子类的+load >先加载元原始类,再加载分类 >不管程序

OC类中一些细节问题(对象类存储、类中结构体的用法)

一:OC中得方法名 注意:方法名冒号和后面的and方法名冒号  都是方法名 一:对象的存储细节 类加载到代码区(包括类中得属性和方法).对象动态加载到堆内存中.指向对象的指针存放在栈区. 三:定义类常见的错误 定义类的时候,常见的错误 1)类的定义不能嵌套 2)不要漏写 @end 3) 不要忘记写实现类(如果忘记写了,编译不会报错,运行时候才报错) 4)定义成员变量的大括号经常漏写 5) 如果不写@interface 只有 @implementation 这可以,但是会报警告,建议不要这么写 6