类别(Category)的作用(零)

类别——一种为现有的类添加新方法的方式。

利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别(catagory)。他可以为任何类添加新的方法,包括那些没有源代码的类。

类别使得无需创建对象类的子类就能完成同样的工作。


一、声明类别

@interface NSString (subString)
- (NSString *)getNewMethod;//新添加的方法
@end

这个声明有两个特点:

  1. 现有的类位于@interface关键字之后,其后是位于圆括号中的类别名称。类别名称是subString,而且该类别将向NSString类中添加方法。换句话说:“我们向NSString类中添加一个名称为subString的类别。”
  2. 可以执行希望向其添加类别的类以及类别的名称,还可以列出添加的方法,不可以添加新的实例变量,类别生命中没有实例变量部分。(下面会说明)


二、实现类别

#import "NSString+subString.h"

@implementation NSString (subString)
-(NSString *)getNewMethod{
    return @"newMethed";
}
@end

在实现部分也包括类名、类别名和新方法的实现代码。


三、类别的局限性

有两方面局限性:

  1. 名称冲突,即当类别中的方法与原始类方法名称冲突时,类别具有更高的优先级。类别方法将完全取代初始方法从而无法再使用初始方法。
  2. 无法向类中添加新的实例变量,类别没有位置容纳实例变量。(用runtime可以解决,请看我的另外一篇文章)


四、类别的作用

类别主要有3个作用:

  1. 将类的实现分散到多个不同文件或多个不同框架中
  2. 创建对私有方法的前向引用
  3. 向对象添加非正式协议

在接下来的文章一一说明。


文章参考:
1、http://blog.csdn.net/jiajiayouba/article/details/21105873
2、http://www.cnblogs.com/stevenwuzheng/p/5457487.html
3、http://blog.csdn.net/wzzvictory/article/details/9295317

### 类型与类别在编程和数据上下文中的含义 在监督学习问题中,存在两种主要类型的任务——分类(classification)和回归(regression)。其中,在分类问题中,目标是从给定输入数据预测离散标签或类别category),这表明类别通常用于描述数据的分组或标记[^1]。 另一方面,在事件驱动架构中,主题(topics)定义了事件的类别或主体。每个主题可以有个或多个订阅者,这些订阅者指定了对该主题感兴趣的各方。因此,类别在此场景下表示一种逻辑上的划分方式,帮助区分不同的事件流或消息集合[^2]。 #### 编程和数据处理背景下的类别概念 在更广泛的编程和数据分析领域,“类别”一词常被用来表示某种形式的数据分组或标注。以下是几个常见的应用场景: 1. **机器学习中的类别** 在机器学习模型训练过程中,类别通常是输出变量的一部分,尤其是在分类任务中。例如,在图像识别任务中,类别可能代表图片所属的不同对象种类,如“猫”、“狗”或“汽车”。这种类别的设定依赖于预先定义好的标签集[^1]。 2. **数据库设计中的类别字段** 数据库表结构中经常包含一个名为“Category”的列来存储记录的具体分类信息。比如在一个电子商务平台的商品表里,“Category”可能会取值为“电子产品”,“服装”或者“家居用品”。 3. **软件工程中的主题类别** 软件系统设计时也常用到类别这一概念,特别是在发布/订阅模式下。这里提到的主题实际上就是一类特定的消息类别,允许不同模块基于兴趣动态绑定至相应频道上接收通知[^2]。 ```python # 示例代码展示如何创建简单的分类器并应用类别标签 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target) clf = DecisionTreeClassifier() clf.fit(X_train, y_train) predictions = clf.predict(X_test) print(f"Predicted categories: {list(set(predictions))}") ``` 上述脚本展示了利用决策树算法构建简单分类器的过程,并最终打印出所预测得到的独特类别列表作为结果。 --- 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值