• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Objective-C category - 扬名

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  如果要对一个类进行扩展,通常的办法就是继承和组合。
  Objective-C提供了另一个选择,引入了category机制,它允许程序员为已有的对象添加新的方法,即便是在没有该对象的源代码的情况下。其优点是利用这个机制,程序员可以把一堆方法分门别类,分成若干组,每组方法用一个Category名字加以命名,定义在同一个文件里。这也是为什么把这个机制叫做Category的原因。

  比如需要为NSString类添加一个新的方法,继承的方式就不太可取,原因在于NSString是个class cluster,一个类簇。什么是一个类簇?简单的来说,NSString是个“工厂类”,然后它在外层提供了很多方法接口,但是这些方法的实现是由具体的内部类来实现的。当使用NSString生成一个对象时,初始化方法会判断哪个“自己内部的类”最适合生成这个对象,然后这个“工厂”就会生成这个具体的类对象返回给你。这种又外层类提供统一抽象的接口,然后具体实现让隐藏的,具体的内部类来实现,在设计模式中称为“抽象工厂”模式。

  因此,对于 NSString,NSDictionary等“类簇”类时,最好用“组合”或者“Category”来进行扩展。

  注意:Category只能用于方法,不能用于成员变量。

   //如已定义Circle类,CircleCal.h文件中,
   #import "Circle.h"
@interface Circle(CircleCal) -(float) AreaCal; -(float) LenCal;
@end;

 

  // CircleCal.m文件中,
   #import "CircleCal.h"
@implementation Circle(CircleCal) -(float) AreaCal{} -(float) LenCal{}
@end; // 此时便可在main函数中调用新定义的函数;

 

 

参考:

Cocoa核心能力:类簇
objc’s category and class cluster
MAC 开发笔记——Objective C 语法之Category和Extension

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Objective-C中的Block(闭包)(轉載)发布时间:2022-07-12
下一篇:
Objective-C对象复制发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap