您的位置:首页 > 其它

设计模式与协议

2015-12-31 18:54 48 查看

  1、设计模式(单例模式)

       1.1单例模式的含义:

            1)单例就是C中的全局变量

            2) 在整个程序⽣生命周期内,该对象只有⼀份存在内存中

            3) 可以在多个对象之间共享数据

        1.2单例模式的必要条件

            1)类方法

            2)全局变量

            如:

                 static Person *person;   / /全局变量

                +(id)print{                    //类方法print

                      if (person==nil) {

                            person=[[self alloc]init];

                      }

    

                     return person;

                }

        1.3单例的优缺点:

             1.3.1 优点

                  1)只有一个对象存在,省内存

                  2)调用类方法即可实例化一个对象

             1.3.2 缺点

                  1)每一次调用,都得被判断,占据内存

                  2)在实例化是用alloc  init,不可用new

                  3)创建的对象永不被释放

    2、协议(是多个对象之间协商的一个接口对象)

       2.1 协议的创建

          在h文件中协议的编写格式如下

                #import <Foundation/Foundation.h>

                @protocol myProtocol <NSObject>

                   method

                @end

       2.1协议的规则(谁遵守谁实现)

           1)协议可以⽤来声明一⼤堆方法(不能申明成员变量)

           2)只要某个类遵守了这个协议,就相当于拥有了这个协议中的所有的方法申明

           3)只要⽗父类遵守了某个协议,就相当于子类也遵守了此协议。

        2.3 协议的编写格式,遵守协议符号是 <  >

           @protocol 协议名称 <NSObject>

            如:

                @protocol protocol1 <NSObject>

        2.4协议的关键字

             @required  //这个方法必须要实现(默认)

             @optional  //这个方法 不一定要实现

              如:

                      @required  //以下方法必须实现

                       -(void)eat;

                      @optional  //以下方法不一定实现

                      -(void)drink;

                      -(void)run;

        2.5protocol的类遵守协议

             @interface 类名 :  父类<协议名称>

             @interface 类名 :  父类 <协议名1,协议名2 >   //一个类可以遵守多个协议

             如:

                  #import "protocol2.h"

                  @interface Panpan : NSObject<protocol2>

        2.6protocol的协议遵守协议

             @protocol 协议名<其他协议名1,其他协议名2>

            如:

                #import "protocol1.h"

                @protocol protocol2 <NSObject ,protocol1> 

        2.7protocol的基协议

           1)   NSObject是⼀一个基类,最根本最基本的类,任何其 他类最终都要继承它

           2)   NSObject是⼀一个协议,最根本最基本的协议,任何 协议最终都要继承它

           3)   NSObject协议中声明很多最基本的⽅方法,⽐比如 description、retain、release等

           4)   建议每个新协议都遵守NSObject协议

       2.8protocol的限制对象类

          限制对象必须遵守某个协议写法:

                类名  <协议名> *对象 = [  [ 类名 alloc]  init ]; 

      2.9protocol的判断定义

        【对象名   respondsToSelector:@selector (方法)】

          作用是:

                      判断当前对象中是否定义了这个方法

           如:

               [person respondsToSelector:@selector(sum: :) ]是筛选此类方法中是否有sum方法

               sum: :是方法名

      2.10协议的注意:

          在协议中写@property name类属性,那么在遵守协议的类中需要写@synthesize name = _name;


[/code]


转载于:https://my.oschina.net/u/2555806/blog/595396

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: