zoukankan      html  css  js  c++  java
  • IOS 语法

    在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。
    1.继承Inherit
      这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
      对于以下情况,无法使用类别,必须使用继承。

    1. 新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
    2. 扩展类的属性,这个类别无法做到。

    示例代码:

    //  ViewControllerEx.h
    @interface ViewControllerEx : UIViewController
    //自己需要添加的方法
    @end
    // ViewControllerEx.m
    @implementation ViewControllerEx
    // 方法的实现
    @end

    2.类别category
      这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,实现对类的方法扩展。Category不能用于向被扩展类添加实例变量。

    示例代码:

    // 这里有一个约定俗成的规定,类别文件命名时,是原类名+扩展标识名
    //  NSString+ex.h
    @interface NSString (ex)
    // 扩展的类回别方法
    @end
    //  NSString+ex.m
    @implementation NSString (ex)
    // 方法的实现
    @end


    3、以下两种方式最后使用类别。

    1. 针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。
    2. 类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。
  • 相关阅读:
    洛谷 P1194 飞扬的小鸟 题解
    洛谷 P1197 星球大战 题解
    洛谷 P1879 玉米田Corn Fields 题解
    洛谷 P2796 Facer的程序 题解
    洛谷 P2398 GCD SUM 题解
    洛谷 P2051 中国象棋 题解
    洛谷 P1472 奶牛家谱 Cow Pedigrees 题解
    洛谷 P1004 方格取数 题解
    洛谷 P2331 最大子矩阵 题解
    洛谷 P1073 最优贸易 题解
  • 原文地址:https://www.cnblogs.com/ziyeSky/p/4140532.html
Copyright © 2011-2022 走看看