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

2020-01-14 16:04:47丽君

这样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] 你好 伦敦奥运! 

 

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


 

 

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

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

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

 

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

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

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

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



注:相关教程知识阅读请移步到IOS开发频道。