美文网首页
iOS开发常用设计模式

iOS开发常用设计模式

作者: 就用帅气点的昵称吧 | 来源:发表于2019-10-24 00:18 被阅读0次

    在开发中很好的利用某种特定的开发模式,则能对编写的程序起到画龙点睛的作用。

      1.协议代理设计模式:

           协议(protocol)类似于Java中的接口,但与接口不同的是,协议没有父类,也不能定义实例变量,在协议中定义相应的方法,在其他的类中进行实现。因此,协议也是iOS开发中比较特殊的一种设计结构。

           协议有两种方法,一种是必须实现的方法,也就是require方法;另一种是可选的方法即optional,引入协议的类,必须实现require方法,可以选择实现optional方法。(与Java的abstract抽象类类似,abstract修饰的方法必须在其继承类中实现)。

    #import<...>

    @protocolHelloProtocol

    @required

    - (void)sayHello;

    @optional

    - (void)handshake;

    @end

      2.通知:

            通知(NSNotification):

               一个通知包括通知发布/通知监听和通知移除三个部分。

               通知发布者:发布通知到通知中心;

               通知中心:接收所有通知发布者发布的通知,并传递给通知观察者;

               通知观察者:接收通知中心发布的通知。

    NSNotification*noitifcation =

    [NSNotificationnotificationWhithName:(NSString*)object:(id) userInfo:(NSDictioncary*)];

    使用通知前,需要创建通知对象。通知对象有两个重要的成员变量---name和object,name代编该通知的名称,也是唯一标识这个通知对象,object代表了通知的发送者。NSNotification对象还包含了一个可选参数----字典(NSDictionary),字典中存储了一些值,在传递的过程中供接收者使用。

    通知创建完成之后,需要控制通知中心发送通知,系统中所有注册的通知都将放在通知中心中。

    获取通知:

    +(NSNotificationCenter*)defaultCenter

    注册通知监听者:

    -(void)addObserver:(id)observer selector:(SEL)aSelector

    name:(NSString*)aName object:(id)anObject

    发送通知:

    -(void)postNotificationName:(NSString*)aName object:(anObject)

    移除通知监听者:

    -(void)removeObserver:(id)observer name:(NSString*)aName

    object:(id)anObject

        3.KVO:

           KVC机制是基于KVC,KVC(NSKey ValueCoding)是代表“键-值-编码”的意思,它是一种简洁访问对象属性的机制,而不是通过调用getter和setter方法或者点语法区访问对象属性。

        设置属性值

    [selfsetValue:@"Jack"ForKey:@"name"]

          Value是属性需要设置的值,而Key则是该属性的名称。设置完成后,可以通过valueForKey方法访问属性。

    访问属性

    [selfvalueForKey:@"name"]

        KVO:

           KVO(NSKeyValueObserving)是代表“键-值-监听”,它确立了一个机制,即当观察者对象属性发生变化时,我们就能收到一个“通知”。这和通知有所区别,通过可以有多个观察者监听通知,是一对多的关系;而KVO则是一个监听者,是一对一的关系

          首先注册对象:

    -(void) addObserver:(NSObject*)forKeyPath:(NSString*)

    options:(NSKeyValueObservingOptions) context:(void*)

         NSObject指监听者,KeyPath指需要监听的属性,context是指方便传输需要的数据,是一个指针。option是监听的选项,也就说明监听返回信息的字典。它包含两个值---NSKeyValueObservingOptionNew和NSKeyValueObservingOptionOld,分别代表返回信息字典的新值和旧值。

        Value发生变化自动调用:

    -(void)observeValueForKeyPath:(NSString*) ofObject:(id)

    change:(NSDictionary*) context:(void*)

        Object指被监听的对象,change字典里存储了一些变化前后的数据。

       4.MVC模式:

          MVC模式可以称为MCV模式,M(Model)和V(View)是分隔开来的,通过Controller从而使两个建立关系。

          Controller和View之间的关系如下:

    在view视图中的操作可以直接“告诉”控制器以使控制器响应;

    view需要实现的协议代理也可以由控制器完成;

    view需要的数据源也需要控制器来提供;

    view需要实现的动作也可以由控制器提供目标实现。

          在MVC设计模式中还有一个重要的参与者就是Model模型,简单来解释其作用就是:定义一个应用所有需要抽象出来的数据结构以及它们之间关系,还有获取它们的途径等。

          Model和Controller之间的交互是单向的,也就是Model没有指向Controller的关系对应。因为模型不需要知道Controller的存在,目的是为了降低程序的耦合,把此部分的模型移到项目中还可以使用。

    相关文章

      网友评论

          本文标题:iOS开发常用设计模式

          本文链接:https://www.haomeiwen.com/subject/uuwlvctx.html