分类和协议

--------分类--------

  • 分类可以模块化方法的定义,可以用于向现有的类添加新的方法。
  • 分类提供了一种简单的方式,用他可以将类的定义模块化到相关方法的组或分类中。它还提供了拓展现有类定义的简便方式,并且不必访问类的源代码,也无需创建子类。
  • 分类可以通过两种方法来实现:
    • 1.继承自一个分类:可以通过将分类名称括在类名称之后的圆括号中来确定方法所属的分类。可以继承自系统自带的,也可以继承自自己拓展的。
  • #import "Fraction"
    
    @interface  Fraction (NSObject)//确定了一个继承自NSObject的分类
    //在这里可以声明新的方法
    @end
    
    @implementation  Fraction (NSObject)
    //在这里可以实现新的方法或者重写NSObject(在于继承自哪个类)自带的方法@end
    • 2.类的拓展:创建一个未命名的分类,且在括号“()”中不指定名字。这种特殊的语法称为类的拓展。
    • #import "Fraction"
      
      @interface  Fraction ()//在这里可以声明新的方法
      @end
      
      @implementation  Fraction ()
      @end
  • 注意:
    • 1.如果在分类中覆写了父类中的方法之后,那么就再也不能访问原来的方法了。所以在分类中覆写方法要慎重。如果需要访问原来的方法可以通过新建子类来实现
    • 2.通过使用分类添加新方法来拓展类不仅会影响这个类,同时也会影响他的所有子类。

--------协议和代理--------

时间: 2024-12-29 15:25:20

分类和协议的相关文章

OC分类和协议

// //  ViewController.m //  OC11分类和协议 // //  Created by Zoujie on 15/9/13. //  Copyright (c) 2015年 Zoujie. All rights reserved. // #import "ViewController.h" #import "Fraction.h" #import "GraphicObject.h" @interface ViewContr

OC的分类和协议

分类和协议是OC中比较显著的俩个特点.分类的功能主要是实现类的扩展,协议则常常用在代理的实现上. 1.分类的声明 在分类的接口文件中,只允许新增方法,不能新增变量.语法形式: @interface 类名 (分类名) 新增的方法声明: @end 2.定义方法 在分类的实现文件中,对新增方法进行定义,语法如下: @implementation 类名 (分类名) 新增的方法的定义{ 语句: } @end 3.方法调用 分类的方法声明和定义之后,就可以进行调用了,语法如下: [对象名 新增方法名] 实例

OC基础8:分类和协议

1.关于分类(category): (1).分类用来拓展现有的类,增加方法,同时可以不必访问主类的源代码,也不用创建子类: (2).只能增加方法,不能增加变量: (3).在代码中也只需要import进父类的h文件,不能编写任何继承的语法,因为不是子类: (4).在分类里添加的新方法会被子类继承. 2.编写一个分类的模板: 原类是MyClass,分类的名称是MyClass+Cate,那么模板如下: #import “MyClass.h” @interface MyClass (Cate) …  

黑马程序员-OC加强学习日记-分类、协议、block类型

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.分类  Gategroy 1.创建一个分类 @interface  类名 (分类名) @end @implementation 类名 (分类名) @end 2.特点:(1)扩展已有类的功能 (2)分类中可以访问原有类的成员变量(定义在头文件中的成员变量) 3.语法步骤:(1)创建一个分类 (2)在分类中增加新方法的声明和实现 4.注意点:(1)分类不可以为原有类增加定义成员变量, @prop

Swift2.0(16)分类与协议

扩展(分类) 类似于Objective-C中的分类功能 即:在现有的一个类型(类类型.结构体.枚举)的基础上添加功能(方法) 这个现有的类,可以是自定义的,也可以是其他框架中的(甚至没有源代码的) 提供了一定的"逆向开发"的能力 格式: extension 现有类型 { //添加的功能 } 可添加的功能: a. 添加行为属性.类行为属性(静态行为属性).静态存储属性 b. 添加各种方法:实例方法.类方法(静态方法).便捷构造方法.下标方法等 c. 添加新的嵌套类型 d. 添加需要遵循的

iOS开发笔记系列-基础5(分类和协议)

分类 在Objective-C中,除了通过新建子类的方式来向类添加新方法外,还可以通过分类的方式.分类提供了一种简单的方式,将类的定义模块化到相关方法的组或分类中,它还提供了扩展现有类定义的简便方式,并且不需要访问类的源代码,也无须创建子类. 比如: //SomeClass+MathOps.h #import "SomeClass.h" @interface SomeClass (MathOPs) -(SomeClass *) add: (SomeClass *)s; -(SomeCl

oc中分类 扩展 协议的使用及区别

一.分类 1.适用范围 当你已经封装好了一个类(也可能是系统类.第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类,只需要给你原来的类增加一个分类. 将一个大型的类拆分成不同的分类,在不同分类中实现类别声明的方法,这样可以将一个类的实现写到多个.m文件中,方便管理和协同开发. 分类中的方法可以只声明,不实现,所以在协议不支持可选方法的时候(协议现在已经支持可选方法),通常把分类作为非正式协议使用. 2.语法格式 文件中的语法 @interface

探究@property、@synthesize、@dynamic、readonly在类、分类、协议中的作用

@protocol StudentProtocol /** 在类里只会生成setter.getter方法的声明, 系统将不会自动生成对应属性的setter.getter方法的实现和成员变量 */ @property (nonatomic, assign) NSInteger age; @end @interface Student : NSObject <StudentProtocol> //打印日志 + (void)printTestInfo; /** 1.生成属性name 2.生成name

OC基础--分类(category) 和 协议(protocol)

OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低,导致了分类文件和协议文件没有找到,最后百度得知: 如图:Xcode 7.2版本中的category文件和protocol文件都归类到了Objective-C File 中   一.category文件: 作用:可以扩展自定义类,或者系统类.下面的实例,是扩展了NSString 类,在类中扩展了计算字