KVC / KVO

设计模式

设计模式是用来解决编程某些特定问题

单例模式

什么时候使用单例模式?

在一个工程中,有一些类只需要一个实例变量,我们就可以将这些类设计成单例模式。

单例模式的作用?

当一个’类A’被设计成单例模式时,由’类A’构造出的实例对象之于其他类来讲为全局实例对象,即在每一个类中由’A’构造出的实例对象,都为相同对象。

在OC中如何将一个类设计成单例模式?

1.在要被设计成单例的类的.h文件中声明一个构造单例的方法,如:

+(Student *)shareIntance;

2.实现该方法

+(Student *)shareIntance{
    static Student *st = nil;//声明一个静态实例对象

    if (st == nil) {
        st = [[Student alloc ] init];
    }
    return st;
}

为了防止通过alloc 或new 创建新的实例

+(id)allocWithZone:(struct _NSZone *)zone{
    @synchronized(self){
        if (st == nil) {
            st = [super allocWithZone:] init];
        }
    }
    return st;
}

观察者模式

什么是观察者模式?

在工程中,一些类去观察’A类’,当’A’类发送变化是,这些观察类就会受到消息,做出相应反应。

什么时候使用观察者模式?

当一个类需要发送消息给多个类的时候,就用观察者模式。

观察者模式的作用?

一对多的发送消息。

如何在OC中实现观察者模式?

在OC中,观察者模式的设计基础为:’KVC / KVO’

KVC的由来:在IOS2.0之前,并没有属性来访问类中实例变量,那时候开发人员使用’键值编码’的方式来访问类中的实例变量,即’KVC’方式。

如何使用KVC来访问类中的实例变量?

KVO的由来:在编程过程中,我们经常需要判断目标是否发生改变,以便及时的做出对应的处理。此时苹果公司就提供了一种策略,即’OC运行时’提供了’KVO’技术。其中’KVO’是基于’KVC’实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值