A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© z276698840 中级黑马   /  2016-3-27 13:13  /  1043 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 协议的基本使用.
    协议: protocol.

    协议: 是专门用来写方法的声明的. 协议中不能写属性.
   
    遵守了协议的类. 这个类就拥有了这份协议中的所有的方法声明. 而不用自己去定义.

2. 声明1个协议.

    @protocol 协议名称 <NSObject>
    方法的声明
    @end


    新建1个协议的步骤:
   


    协议中不能写属性.
    可以写方法的声明.
    也可以写@property,但是协议中的@property只会生成getter setter的声明.


3. 类遵守协议.

    如果1个类想要拥有某个协议中的所有方法的声明.就只需要遵守这个协议就可以了.

    遵守协议的格式.
    @interface 类名 : 父类名 <协议名称>

    @end

    类遵守协议的效果: 这个类咔嚓就有了这个协议中的所有的方法的声明.而不用自己去声明.


    : 是继承,
    <> 是遵守协议.


    类遵守1份协议. 这个类仅仅是有了这份协议中的方法的声明而已. 不会自动实现.
    还需要自己傻不拉几的去实现.


    如果你遵守了协议,但是没有实现协议中的方法,编译器在编译的时候,不会报错,只是给1个警告.
    在执行的时候.如果调用这个协议方法,而这个协议方法没有实现 就会报运行错误.

    如果父类遵守了某份协议,就相当于子类也遵守了.

   
4. 继承是单继承.
    协议是可以多遵守的.

    @interface 类名 : 父类名  <协议名1,协议名2,.......>


    @end

    如果1个类遵守了多份协议.那么这个类就相当于拥有了所有协议中的方法声明.



    类的声明中 可以声明 多个名称相同的方法. 但是他只认为有1个.
    类的实现中,不能有多个名称相同的方法.



5. @required与@optional


    当1个类遵守1份协议之后.就相当于这个类拥有了这份协议中的所有的方法的声明啊!.
    但是,仅仅是拥有这个协议中的方法的声明. 还要自己去实现.

    这两个关键字是用来修饰协议中的方法的.

    被@required修饰的方法,如果遵守这个协议的类不去实现的话,编译器就会报警告.
    被@optional修饰的方法,如果遵守这个协议的类不去实现的话,编译器连警告都不会报.

    无论是@required还是@optional 遵守协议的类如果不实现的话,编译器都不会报错.
    如果是@required 不实现的话 就给1个警告.
    如果是@optional 不实现的话 警告都没有

    唯一的作用: 在于程序员之间的沟通.


    我写1份协议 你来遵守.

    如果方法必须要实现.那么使用要@required.
    如果方法可以实现也可以不实现,那就使用@optional.


    如果我们没有为协议的方法写修饰符,那么默认就是@required,

评分

参与人数 1黑马币 +6 收起 理由
寻心人偶 + 6 很给力!

查看全部评分

3 个回复

倒序浏览
刚好可以拿来学习学习
回复 使用道具 举报
不错很好
回复 使用道具 举报
赞赞赞赞赞赞赞赞赞赞赞赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马