zoukankan      html  css  js  c++  java
  • 关于category

    类别,用于增加类的方法。只能用于单个类,只能增加方法不能增加属性。这是与protocol的区别。协议能多个类共用。(协议是多个类共享的一个方法列表)可以使用conformsToProtocol:方法检查一个类是否遵循某个协议

    1 id currentObject;
    2 ...
    3 if ([currentObject conformsToProtocol:@protocol (Drawing)] == YES)
    4 {
    5     //Send currentObject paint,erase and/or outline msgs
    6     ...          
    7 }

    非正式协议也称为抽象协议。实际上是一个分类,列出了一组方法而没有去实现它。每个人都继承相同的根对象,因此非正式分类通常是为根类定义的。

    @optional指令用于取代非正式协议的使用

    在类别中的方法不必全部实现。而且类别中的方法优先级别比较高,如果与类中的方法重名,则覆盖类中方法。

    Objective-c不提供真正的多继承,但它提供一种解决方案,允许对象响应再其他类中实现的消息。

    如果要让对象响应另一个类的消息,可以给应用程序增加消息转发功能,以便能够访问该对象的方法。

    通常,发送无法识别的消息将产生一个运行时错误,从而导致应用程序崩溃。但在崩溃出现之前,iPhone的运行时对象为每个对象提供了第二次机会来处理消息。捕捉到一条消息后可以把它重定向给能够理解并影响该消息的对象。

    Objective-c通过一个叫消息转发的过程来提供此功能。发送消息给一个无法处理该选择器的对象时,这个选择器将被转发给一个forwardInvocation:方法。接收这条消息的对象,即一个NSInvocation实例保存原始选择器和被请求的参数。可以覆盖forwardInvocation:方法,并把该消息发送给另一个对象。

  • 相关阅读:
    Python常用函数
    Mock测试&Postman mockserver详细教程
    openpyxl模块
    adb 'grep' 不是内部或外部命令,也不是可运行的程序或批处理文件
    Appium-Python-Windows环境搭建笔记
    调用类方法时报错:missing 1 required positional argument: 'self'
    RE正则表达式-元字符
    微分方程
    操作系统学习记录
    Mybatis基础配置
  • 原文地址:https://www.cnblogs.com/sevenology/p/3120925.html
Copyright © 2011-2022 走看看