iOS-类和对象的见解


什么是类?
类就是具有相同特性和行为的对象的抽象。举个简单的例子,老师类。那么老师是一个类,老师分很多种,可能是语文老师,可能是数学老师,也可能是苍老师,这些是具体的对象,也叫具体的实例。而这些具体职业的老师里面,都具有相同的特征和行为,就是教学,育人。而这些具体职业的老师统称为老师,也就是老师类,是具体对象的抽象。

类方法:
类方法,也叫静态方法。
类方法由类名直接调用。

类方法注意点:
类方法一般用于创建各种对象。(工厂方法、单例模式,下面会讲)
类方法,不可以调用、读取实例变量和属性。
类方法中创建对象,可以用该对象访问对象方法。

对象(实例)


什么是对象?
对象是类的实例。还是举上面的例子,既然老师是类,那么具体到什么类型的老师就是对象。语文老师、苍老师等等,都是一个具体的对象。换句话说,万物皆对象。人是一个类,而类里面还可以细分为男性类,女性类。男性类里面可以实例化出来男孩对象,中年男性对象,老年男性对象。女性类也是一样。
再比如说,内陆人基本分不清楚每种贝壳的名字,反正有带壳的都成为贝壳类物种。那么,壕、青螺、扇贝、花甲、牡蛎、蛤蜊、蛏等等,这些都是贝壳类的具体实例化出来的对象。那如果摆两个扇贝在你面前,那怎么说?简单啊,左边的扇贝定义为扇贝对象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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值