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

  • 相关阅读:
    安装部署NetBeans mysql Tomact joget workflow 环境
    Django-分页扩展
    supervisor linux下进程管理工具
    注意python函数参数的可变变量的传递
    Python远程部署利器Fabric详解
    chrom 扩展程序安装
    supervisor
    python进度条
    os sys区别
    知乎上关于网站 权限系统的回答
  • 原文地址:https://www.cnblogs.com/sevenology/p/3120925.html
Copyright © 2011-2022 走看看