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

  • 相关阅读:
    bzoj1951 [Sdoi2010]古代猪文
    bzoj2693 jzptab
    数学一本通第三章总结
    poj1019 Number Sequence
    SGU179 Brackets light
    字母组合2
    字母组合
    Java基础知识强化之集合框架笔记09:Collection集合迭代器使用的问题探讨
    Java基础知识强化之集合框架笔记08:Collection集合自定义对象并遍历案例(使用迭代器)
    Java基础知识强化之集合框架笔记07:Collection集合的遍历之迭代器遍历
  • 原文地址:https://www.cnblogs.com/sevenology/p/3120925.html
Copyright © 2011-2022 走看看