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:方法,并把该消息发送给另一个对象。

  • 相关阅读:
    leetcode236
    leetcode139
    leetcode56
    leetcode19
    2018-5-22-SublimeText-粘贴图片保存到本地
    2019-1-29-Sublime-Text-安装中文、英文字体
    2019-1-29-Sublime-Text-安装中文、英文字体
    2018-8-15-WPF-插拔触摸设备触摸失效
    2018-8-15-WPF-插拔触摸设备触摸失效
    2019-10-18-dotnet-修复找不到-System.ServiceProcess-定义
  • 原文地址:https://www.cnblogs.com/sevenology/p/3120925.html
Copyright © 2011-2022 走看看