Category在iOS在开发常用。

特别是对于系统扩展上课时间。我们不能继承系统类。直接添加到系统类方法,最大程度上体现Objective-C动态语言特征。

#import
@interface NSObject (Category)
- (void)myMethod;
@end

这是一个最简单的Category,作用于NSObject类。给NSObject加入了一个方法。

使用Category须要注意的点:
(1) Category的方法不一定非要在@implementation中实现。也能够在其它位置实现,可是当调用Category的方法时,根据继承树没有找到该方法的实现,程序则会崩溃。

(2) Category理论上不能加入变量,可是能够使用@dynamic 来弥补这样的不足。

#import
static const void * externVariableKey =&externVariableKey;
@implementation NSObject (Category)
@dynamic variable。
- (id) variable
{return objc_getAssociatedObject(self, externVariableKey);
}
- (void)setVariable:(id) variable
{objc_setAssociatedObject(self, externVariableKey, variable, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
} 

-----------------------------------------------------------

Extension很像是没有命名的类别,即匿名类别

@interface MyClass : NSObject
@property (retain, readonly) float value;
@end
//一般的时候。Extension都是放在.m文件里@implementation的上方。
@interface MyClass ()
@property (retain, readwrite) float value;
@end

使用Extension须要注意的点:
(1) Extension中的方法必须在@implementation中实现,否则编译会报错。

两者有一点差别

图片摘自: http://blog.sina.com.cn/s/blog_a2c098b50101gsn0.html

版权声明:本文博客原创文章。博客,未经同意,不得转载。

iOS类别(Category)和扩展(Extension,匿名类)相关推荐

  1. Objective-C分类 (category)和扩展(Extension)

    1.分类(category) 使用Object-C中的分类,是一种编译时的手段,允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以 ...

  2. ios 类别(category)

    定义 类别(category)是Objective-C语言的新特性,为现有的类添加新方法的方式.局限性:1.无法添加新的实例变量.2.与类本身的方法名称冲突.当名称冲突时,类别具有更高的优先级.作用: ...

  3. 【iOS】——分类、扩展和关联对象

    目录 一.分类Category和扩展Extension 1.分类Category(运行期) 2.扩展Extension(编译期) 3.分类和扩展的区别 二.分类Category的实质 1.分类的结构 ...

  4. extension(类扩展)和 category(类别)

    extension(类扩展) 简单来说,extension在.m文件中添加,所以其权限为private,所以只能拿到源码的类添加extension.另外extension是编译时决议,和interfa ...

  5. Objective C 类别(Category)与类扩展(Extensions)

    一.类别(Category) 类别(Category)是一种可以为现有的类(包括类簇:NSString...,甚至源码无法获得的类)添加新方法的方式无需从现有的类继承子类.类别添加的新方法可以被子类继 ...

  6. Category(类别)和扩展(Extension)的区别

    类别: 1.类别不能为已存在的类添加实例变量. 2.类别中添加的方法优先级高,会覆盖原类中的方法 3.原类中的私有方法,可以在类别中定义一下,这样就可以使用了. 4.在categroy中定义的方法可以 ...

  7. iOS进阶之类别(Category)(9)

    类别使用场景 见解一 Category的主要作用是为已经存在的类添加方法. Objective-C 中的 Category 就是对装饰模式的一种具体实现.它的主要作用是在不改变原有类的前提下,动态地给 ...

  8. iOS进阶之类扩展(Extension)(8)

    进阶阶段要求对底层有一定的认识,要对原理有刨根问底的执着精神.要对知识有全面的认识,要对细节以及注意问题有独特的见解.Extension时经常被面试者提到的问题. Extension 类扩展可以理解为 ...

  9. [iOS开发]Category、Extension和关联对象

    文章目录 什么是Category? 分类和扩展 Category的实质 Category结构体 从C++开始看起 对象方法列表结构体 类方法列表结构体 协议列表结构体 属性列表结构体 category ...

  10. objective-c 类目(Category)和延展(Extension)

    类目的基本概念: 如果有封装好的一个类,随着程序功能的增加,需要在类中增加一个方法,那我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时添加一个该类的类目即可. 1.在类目定义的方法 ...

最新文章

  1. Apache Torque入门学习
  2. c#_限制TextBox输入类型仅可为“-” “.” 数字
  3. Win7和VS2013上使用Intel的TBB
  4. Linux操作系统下iptables+nat实现ADSL共享上网!
  5. XML与Web数据挖掘
  6. 远程桌面退出全屏/不能全屏/全屏切换的技巧
  7. 第4章 分治策略 monge阵列
  8. System.Net.Mail 简介 收藏
  9. python图像增强算法_python 图像增强算法实现详解
  10. 免费计算机网络基础ppt,计算机网络基础概念课件.ppt
  11. A星寻路 A星算法优化
  12. Vuepress2.X从0-1保姆级入门教程
  13. pycharm收费版和 免费版的区别
  14. 期货开平,多开,空开,多平,空平
  15. 计算机水平居中怎么做,word标题居中怎么设置
  16. 【SOT】SiamRPN代码笔记
  17. 南京周边城市两日游方案
  18. matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...
  19. 小半径中值模糊的急速实现(16MB图7.5ms实现) + Photoshop中蒙尘和划痕算法解读
  20. 液晶面板里面有些什么配件_液晶面板的种类有哪些

热门文章

  1. python读取dat文件并保存为Excel格式
  2. linux qt 触摸屏事件,利用触摸屏获取事件坐标
  3. linux获取cpu数量函数,Linux上获取CPU Core个数的实现
  4. 统计信号处理知识点总结_统计信号处理-简单看看克拉美罗界
  5. EMNLP2020文档级关系抽取模型GLRE 论文Global-to-Local Neural Networks for Document-Level Relation Extraction
  6. vc access mysql_VC中访问Access数据库的方法
  7. 作业帮基于 Flink 的实时计算平台实践
  8. 30岁的程序员:不拼体力的我们应该关注什么?
  9. python中nums.append_Python程序中的append()和extend()
  10. 微型计算机的输出有,微型计算机必不可少的输入/输出设备是()。 - 百科题库网...