24-oc类工厂方法和类对象基本概念

Posted wc&Home

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了24-oc类工厂方法和类对象基本概念相关的知识,希望对你有一定的参考价值。

类工厂方法

用于快速创建对象的类方法, 我们称之为类工厂方法

 

类工厂方法应用场景

类工厂方法中主要用于给对象分配存储空间和初始化这块存储空间

 

类工厂方法使用规范

规范:

一定是类方法 +

方法名称以类的名称开头, 首字母小写

一定有返回值, 返回值是id/instancetype

在类工厂方法实现中,调用本类的构造方法,创建实例对象,并返回实例对象

自定义类工厂方法是苹果的一个规范, 一般情况下, 我们会给一个类提供自定义构造方法和自定义类工厂方法用于创建一个对象

 


 

类工厂方法在继承中的注意点

以后但凡自定义类工厂方法, 在类工厂方法中创建对象一定要使用self来创建,一定不要使用类名来创建

 

 


 

类的本质

 

类其实也是一个对象, 这个对象会在这个类第一次被使用的时候创建

只要有了类对象, 将来就可以通过类对象来创建实例对象

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

类对象中保存了当前对象所有的对象方法

当给一个实例对象发送消息的时候, 会根据实例对象中的isa指针去对应的类对象中查找

所有类对象的继承关系就是元类对象的继承关系:

 

获取类对象及类对象应用场景

获取类对象

使用class方法获取类对象

// [实例对象 class];  [类名 class];

Person *p1 = [[Person alloc] init];

Person *p2 = [[Person alloc] init];

// 一个类再内存中只有一份类对象

Class c1 = [p1 class];

Class c2 = [p2 class];

Class c3 = [Person class];

NSLog(@"c1 = %p, c2 = %p, c3 = %p", c1, c2, c3);

 

类对象的应用场景

用于创建实例对象

 

Person *p3 = [[c1 alloc] init];

p3.age = 30;

NSLog(@"%i", p3.age);

用于调用类方法

[Person test];

[c1 test];

以上是关于24-oc类工厂方法和类对象基本概念的主要内容,如果未能解决你的问题,请参考以下文章

工厂方法模式

工厂模式:简单工厂工厂方法抽象工厂

基本设计模式06- 一般工厂模式

基本设计模式06- 一般工厂模式

工厂方法模式

设计模式---工厂方法模式