- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我正在编写的 cocoa 应用程序中,我想创建 NSMutableDictionary 的几种不同类型的“子类”。我将该词放在引号中,因为我知道向 NSMutableDictionary 等类添加方法的推荐方法是使用类别。
但是,这给我带来了一个令人困惑的情况。
我希望 NSMutableDictionary 的每个类别都实现一个执行不同操作的“run”方法,具体取决于我引用的“子类”。例如,假设我有以下 3 个类别:
NSMutableDictionary+Category0
NSMutableDictionary+Category1
NSMutableDictionary+Category2
在每一个中,我都想要一个“运行”方法,例如,执行以下操作:
属于类别 0 ...
-(void)run {
NSLog(@"I'm running in NSMutableDictionary+Category0");
}
在类别 1 中...
-(void)run {
NSLog(@"I'm running in NSMutableDictionary+Category1");
}
在类别 2 中...
-(void)run {
NSLog(@"I'm running in NSMutableDictionary+Category2");
}
应用这些类别后,我想创建一个名为“myObjects”的 NSArray,其中包含类别 0、类别 1 和类别 2 对象的随机混合。然后,我想做以下事情:
for (NSMutableDictionary* dict in myObjects) {
[dict run];
}
...并调用每个特定于类别的“运行”方法。
除非我做错了什么,否则我无法让它正常工作,因为每个类别都尝试向 NSMutableDictionary 添加一个“run”方法,并且只会调用其中一个方法。
我想做的事情可能吗?如果是这样,有人可以向我指出适当的文档吗?
提前致谢。
<小时/>感谢肖恩和迦勒。由于您概述的原因,我担心我无法做到这一点,但我想无论如何我都会问,以防我错过了一些可能对我有帮助的有关 Objective C 或 cocoa 的知识。
由于各种特定于应用程序的原因,我需要“父”类成为 NSMutableDictionary,因此我将按如下方式管理它......
我将创建一个类别,向 NSMutableDictionary 添加单个“run”方法。我将使用该字典中的一个特殊键来保存新的“MyRunnable”类的实例及其自己的“run”方法。我将为我想要的所有各种“运行”实现子类化这个 MyRunnable 类,然后我将实例化适当的子类并使用这个特殊键将其放入 NSMutableDictionary 中。然后,在 NSMutableDictionary 的“run”方法中,我将通过特殊键引用“MyRunnable”的实例并调用它自己的“run”方法。
这是另一种形式的遏制,它允许我的顶级类仍然是 NSMutableDictionary。
再次感谢。
最佳答案
你想做的事情是不可能的。在给定的上下文中,类别方法名称只能引用一种方法。也就是说,当您在每个类别中重新定义 run
时,它实际上会覆盖 run
的先前实现,因此您在 NSMutableDictionary
中永远不能拥有多个方法> 用这个名字。
作为解决方法,您可以尝试创建一系列包装类,每个包装类都包含一个可变字典并在其上实现 run 方法。这将使您不必子类化 NSMutableDictionary
,但会为您提供所需的灵 active 。类似于:
@interface MyDictionaryWrapper1
@property (nonatomic, retain) NSMutableDictionary *myDict;
-(void)run;
@end
.
.
.
@implementation
-(void)run
{
//Do stuff with self.myDict here
}
然后,您可以编写 MyDictionaryWrapper2
和 MyDictionaryWrapper3
,它们各自以不同的方式实现 run
。
然后,在 for
循环中,您可以使用 id
来引用每个对象
for (id wrapper in myArrayOfDictionaryWrappers) {
[wrapper run];
}
关于Objective-c:NSMutableDictionary 的多个类别,它们像独特的子类一样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702878/
对于 Prometheus 指标集合,如标题,我真的找不到只能通过 type Summary 完成的用例。 ,似乎它们都可以通过 type Histogram 以某种方式完成还。 让我们以请求并发度量
这个问题在这里已经有了答案: Ignore case while using duplicated (1 个回答) 关闭 9 个月前。 使用不区分大小写的 unique(tolower(x)) 删除
应用程序监控服务的一个有用功能是每次发生新的、独特的错误/问题/异常时发送警报(例如电子邮件)(即不是每次发生)。要么只是第一次,要么最多每次 X 次(一天或一周等)。例如,这可以通过 Visual
应用程序监控服务的一个有用功能是每次发生新的、独特的错误/问题/异常时发送警报(例如电子邮件)(即不是每次发生)。要么只是第一次,要么最多每次 X 次(一天或一周等)。例如,这可以通过 Visual
我想要相当于 DB2 中 MySql 的 GROUP_CONCAT 功能。 我尝试过 DB2 的 XML Aggrigate 函数来合并 murows。 SELECT a.ID, sub
我正在运行 python 数据库迁移脚本 (Flask-Migrate) 并添加了 alembic.ddl.imp import DefaultImpl 来解决第一组错误,但现在我收到以下错误。我正在
我有一个逗号分隔的文件“myfile.csv”,其中第 5 列是日期/时间戳。 (mm/dd/yyyy hh:mm)。 我需要列出所有包含重复日期的行(有很多) 我正在通过 cygwin 为 WinX
我使用的是 MySQL 5.7。 我有一个表格如下: -------------------------------------------------- | id | currentcy_id |
所以我有一个像这样的 ng-repeat: Join Ride /md-switch> 但是,每个 md-switch 都有相同的模型,因此当我在 Control
据我了解, Mongoose 预保存 Hook 在将文档插入集合之前但在验证发生之后触发。因此,如果一次验证失败,则不会调用预保存 Hook 。 就我而言,无论如何都会调用它们: 下面的简单代码的作用
如果我对我的目标文件执行此 grep,我会得到例如 275 作为结果。 但是我想学习 awk,所以在 awk 中尝试了这个: awk 'BEGIN { count=0 } /my pattern/
我是一名优秀的程序员,十分优秀!