首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子类NSDictionary如下:@implementation NSDictionary (天气)

子类NSDictionary如下:@implementation NSDictionary (天气)
EN

Stack Overflow用户
提问于 2015-01-06 17:02:54
回答 2查看 89关注 0票数 0

我正在查看Ray教程,我遇到了一种对NSDictionary进行子类化的方法,这是我以前从未见过的:

第一:

代码语言:javascript
运行
复制
@implementation NSDictionary (weather)

然后在另一个文件中:

代码语言:javascript
运行
复制
@implementation NSDictionary (weather_package)

这似乎只是“工作”在另一个文件,其中包括它。最令人费解的是,在使用这些内容的类中定义的NSDictionary似乎与"weather_package“版本相匹配,而容器中的”weather_package“版本则与”天气“版本相匹配。

有人能告诉我这是怎么回事吗?我不完全清楚在检查代码时这是如何工作的,特别是编译器如何决定在何处应用什么,因为除了将这些文件包括在头中之外,没有显式地引用这些文件。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-06 17:07:49

这不是子类。这是使用类别扩展类。这用于将新功能引入现有类,而不对它们进行子类划分。

可以为任何类声明类别,即使您没有原始实现源代码(例如标准Cocoa或Cocoa类)。在类别中声明的任何方法都将对原始类的所有实例以及原始类的任何子类可用。在运行时,由类别添加的方法与由原始类实现的方法没有区别。

一个类别可以定义如下

代码语言:javascript
运行
复制
@interface ClassName (CategoryName)

@end

@implementation ClassName (CategoryName)

@end

欲了解更多信息,请阅读编号/doc/uid/SW1 40011210-CH6-SW1

票数 2
EN

Stack Overflow用户

发布于 2015-01-06 17:07:51

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27803537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档