简单介绍iOS开发中关于category的应用

xxybgsnc

xxybgsnc

2016-02-19 11:04

下面请跟着图老师小编一起来了解下简单介绍iOS开发中关于category的应用,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

创建category文件:

这里,一定要选好base的class, 如下:

无论一个类设计的如何完美,都不可避免的会遇到没有预测到的需求,那怎么扩展现有的类呢?当然,继承是个不错的选择。但是Objective-C提供了一种 特别的方式来扩展类,叫Catagory,可以动态的为已经存在的类添加新的行为。这样可以保证类的原原来的基础上,较小的改动就可以增加需要的功能。使 用Category对类进行扩展时,不需要访问其源代码,也不需要创建子类,这样我们可以扩展系统提供的类。Category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中。

通过一个简单的例子看看Category如何使用。

现在我们有一个类叫MyClass
代码如下:

#import  
 
@interface MyClass : NSObject 
-(void) myPrint; 
@end 
#import "MyClass.h" 
 
@implementation MyClass 
-(void) myPrint{ 
    NSLog(@"myPrint 调用了"); 

@end 
它有一个实例方法:myPrint,待会我们可以在扩展后调用它

好了,有了上面的MyClass后,我们要在不增加子类,不修改MyClass类的情况下增加一个HelloWorld的方法,怎么添加呢?只需添加两个文件MyClass+HelloWorld.h  和 MyClass+HelloWorld.m。

在声明文件和实现文件中用“()”把Category的名称括起来。原类名+Category”的这是约定的文件命名方式。

看看这两个文件怎么实现,在Xcoed上按Command+N,新建文件,选择Objective-C category方式创建类,这样Xcode会自动帮你创建约定命名方式的文件。

Category on的类是MyClass,选对了哦

这样Xcode就帮你创建了MyClass+HelloWorld.h  和 MyClass+HelloWorld.m这两个文件了。

那么我们现在添加一个HelloWorld方法。看看实现后的代码如下:

 
代码如下:

#import "MyClass.h" 
 
@interface MyClass (HelloWorld) 
-(void)HelloWorld; 
@end 
#import "MyClass+HelloWorld.h" 
 
@implementation MyClass (HelloWorld) 
-(void)HelloWorld{ 
    NSLog(@"你好 伦敦奥运!"); 

@end 
在main中调用
代码如下:

 MyClass *myclass = [[[MyClass alloc]init]autorelease]; 

[myclass HelloWorld]; 
[myclass myPrint]; 
 

运行打印结果:
代码如下:

 2012-08-09 11:24:16.697 objectiveC[16053:403] 你好 伦敦奥运! 

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

2012-08-09 11:24:16.699 objectiveC[16053:403] myPrint 调用了 
 

那的Category的使用场景有那些呢:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

1、类包含了很多个方法实现,而这些方法需要不同团队的成员来实现

2、当你在使用基础类库中的类时,你不想继承这些类而只想添加一些方法时。

Category能实现上面的需求,当然也有使用Category是需要注意的问题:

1、Category可以访问原始类的实例变量,但不能添加实例变量,如果想添加变量,那就通过继承创建子类来实现。

2、Category可以重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。如果确实要重载,那就通过继承创建子类来实现。

3、和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。

展开更多 50%)
分享

猜你喜欢

简单介绍iOS开发中关于category的应用

编程语言 网络编程
简单介绍iOS开发中关于category的应用

简单掌握iOS应用开发中sandbox沙盒的使用

编程语言 网络编程
简单掌握iOS应用开发中sandbox沙盒的使用

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

iOS的UI开发中Modal的使用与主流应用UI结构介绍

编程语言 网络编程
iOS的UI开发中Modal的使用与主流应用UI结构介绍

iOS应用开发中SQLite的初步配置指南

编程语言 网络编程
iOS应用开发中SQLite的初步配置指南

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

简单讲解iOS应用开发中的MD5加密的相关使用

编程语言 网络编程
简单讲解iOS应用开发中的MD5加密的相关使用

AJAX开发技术在PHP开发中的简单应用技巧

Web开发
AJAX开发技术在PHP开发中的简单应用技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

选择PowerPoint 2019的优势

选择PowerPoint 2019的优势

java插入排序 Insert sort实例

java插入排序 Insert sort实例
下拉加载更多内容 ↓