类
什么是类?
类就是具有相同特性和行为的对象的抽象。举个简单的例子,老师类。那么老师是一个类,老师分很多种,可能是语文老师,可能是数学老师,也可能是苍老师,这些是具体的对象,也叫具体的实例。而这些具体职业的老师里面,都具有相同的特征和行为,就是教学,育人。而这些具体职业的老师统称为老师,也就是老师类,是具体对象的抽象。
类方法:
类方法,也叫静态方法。
类方法由类名直接调用。
类方法注意点:
类方法一般用于创建各种对象。(工厂方法、单例模式,下面会讲)
类方法,不可以调用、读取实例变量和属性。
类方法中创建对象,可以用该对象访问对象方法。
对象(实例)
什么是对象?
对象是类的实例。还是举上面的例子,既然老师是类,那么具体到什么类型的老师就是对象。语文老师、苍老师等等,都是一个具体的对象。换句话说,万物皆对象。人是一个类,而类里面还可以细分为男性类,女性类。男性类里面可以实例化出来男孩对象,中年男性对象,老年男性对象。女性类也是一样。
再比如说,内陆人基本分不清楚每种贝壳的名字,反正有带壳的都成为贝壳类物种。那么,壕、青螺、扇贝、花甲、牡蛎、蛤蜊、蛏等等,这些都是贝壳类的具体实例化出来的对象。那如果摆两个扇贝在你面前,那怎么说?简单啊,左边的扇贝定义为扇贝对象1,右边那个定义为扇贝对象2不就行啦嘛~
对象方法(实例方法):
对象方法,也称实例方法。
对象方法,和对象有关,所以可以访问、调用实例变量和属性。
工厂方法
什么是工厂方法:
工厂方法,就是类方法。一般用于生产对象。
工厂方法作用:
类中经常会出现一些工厂方法,其目的就是为了创建对象。
例子(只演示带参数的工厂方法):
/**
转化为模型数据
@param dict json字典
@return 模型对象
*/
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)StallInfoModelWithDict:(NSDictionary *)dict;
-(instancetype)initWithDict:(NSDictionary *)dict
{
if (self = [super init]) {
self.user_phone = dict[@"user_phone"];
self.user_coorLatitude = dict[@"user_coorLatitude"];
self.user_coorLongtitude = dict[@"user_coorLongtitude"];
self.stallInfo = [StallShopModel StallShopModelWithArray:dict[@"stallInfo"]];
}
return self;
}
+(instancetype)StallInfoModelWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDict:dict];
}
单例模式
什么是单例模式?
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
AppDelegate就是一个单例,很多时候,为了偷懒,我直接把东西定义在AppDelegate里面,然后获取这个单例就好。当然了,必要时候,要是要自己建立文件,写单例。
单例模式的作用:
可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而能方便地控制类实例的个数,并节约系统资源。
例子:
+(singleTon *)shareSingleton
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sgton = [[singleTon alloc] init];
});
return sgton;
}
+(instancetype)allocWithZone:(struct _NSZone *)zone
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (!sgton) {
sgton = [super allocWithZone:zone];
}
});
return sgton;
}