zoukankan      html  css  js  c++  java
  • 协议

    如果类遵守了协议,那么这个类的实例对象就具备了协议中的行为

    也就必须要实现协议中的方法,否则不能实现委托

    协议的定义

    @protocol 协议的名字 <NSObject>

    … … (声明遵守该协议的类必须要实现的方法)

    方法有两种关键字来修饰:@required和optional

    @required表示遵守协议的类必须要实现该方法, 是默认的属性

    @optional表示可以不去实现该方法

    @end

    下面还要定义一个遵循某个协议的指针变量(其中参数使用assign而不使用retain,即不进行内存管理,只是普通赋值,在自动内存管理中使用weak关键字);

    @property (assign) id<要遵循的协议名> 指针变量名;

    协议上的指针变量可以调用协议上的方法

    声明一个方法用来处理委托

    -(void)delegate;  //根据是否需要参数来决定是否加上参数

    定义协议的类作为委托的发起者, 代理来接收委托

    协议的作用是规范接口,但是不能声明变量

    它弥补了OC不能多继承的先天缺陷(一个类遵守多个协议时.就类似于多继承)

    同时继承也有规范接口的作用

    oc中的选择器SEL @selector

    SEL sel=@selector(方法名);    //将方法名转化为选择器类型SEL

    [类名 respondsToSelector :sel]返回BOOL值来判断类中是否实现了某方法,sel是方法名转化来的选择器,实现了返回1否则返回0.

    http://www.cnblogs.com/PaulpauL/ 版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    K8S 内部服务调用域名解析超时
    云原生服务网格istio 第二章
    云原生服务网格istio 第一章
    kubernetes权威指南 第4版 第十章节读书笔记
    Navicat Premium基本使用
    Mac安装SecureCRT
    zabbix监控ssl证书到期时间
    nginx 配置proxy_pass URL末尾加与不加/(斜线)的区别
    PyCharm 项目删除
    Pycharm问题:module 'pip' has no attribute 'main'
  • 原文地址:https://www.cnblogs.com/PaulpauL/p/4728470.html
Copyright © 2011-2022 走看看