设计模式与协议

  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;



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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值