[iOS开发] Category的使用

什么是Category

在写项目时想过这个这样一个问题 我能否给某个类中添加其他需要的属性或者方法 比如给Button这个类中添加我们需要的属性 这样就可以保证在需要的时候来可以直接进行调用(类似于其tag值这样的属性 或者 方法什么的)
在查阅了博客和询问学姐之后 了解到了Category(分类)。

  • Category是Objective-C 2.0之后添加的语言特性,分类、类别其实都是指的Category。
  • Category的主要作用是为已经存在的类添加方法。也可以说是将庞大的类代码按逻辑划入几个分区。
  • Objective-C 中Category 就是对装饰模式的一种具体实现。它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法。

其中的很多深层知识点我还不是很清楚 下面的就简单的如何应用而言

选择Objective-C File
[iOS开发] Category的使用_第1张图片

File:创建的文件名
File Type:选择Category
Class:使用的类 谁用它就是谁
[iOS开发] Category的使用_第2张图片
[iOS开发] Category的使用_第3张图片

在分类中添加属性时要注意,在分类头文件中添加的属性不会自动生成setter和getter,需自己以runtime关联对象方法实现,并且不能以下划线+属性名的方式访问。 objc_setAssociatedObject 中的第二个属性是键值,每个关联对象进行不同的键值进行联系,这个键值是自己设置的
最后一个我也搞不清楚是什么东西…
[iOS开发] Category的使用_第4张图片

[iOS开发] Category的使用_第5张图片

这个是加属性 加方法比较简单 不用重写set和get 就加个方法 然后直接调用就好了 调用的对象必须和创建时的class一致,不然无法被调用。

你可能感兴趣的:(ios,objective-c)