iphone - 更改子类的方法名称

标签 iphone ios objective-c

我有一个 NSMutableArray 的子类,它实际上处理某种类型的数据,比如 Employee。问题是我不喜欢 addObject insertObject 等的固有名称,想将它们更改为 addEmployee 插入员工

我该如何处理?

最佳答案

如果您不打算继承父类(super class)的方法,那么您不应该使用该父类(super class)!

当您继承时,它是子类和父类(super class)之间的"is"关系。 “Employer 是一个 NSMutableArray”——不,那不是真的,因此不要让 Employer 成为 NSMutableArray 的子类。此外,将来您可能会使用字典来存储员工(例如映射 'name' -> 'employee'),然后将表示作为数组继承根本行不通。

@interface Employer : NSObject {
  NSMutableArray *employees;
}

- (void) addEmployee: (Employee *) employee;
@end

像这样。现在 addObject: 不适用于 Employee 的实例;只有 addEmployee: 有效。此外,您最终只想专门化 filteredArrayWithPredicate: 之类的方法 - 因此继承它们不会是一个优势。

关于iphone - 更改子类的方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225449/

相关文章:

iphone - 通过在表格 View 中选择一行来删除核心数据条目

iphone - 使用 zbar sdk 的条码阅读器

iphone - 范围栏按钮可以用于过滤结果而不激活 UISearchBar 的键盘吗?

ios - 使用 UINavigationController 和 UINavigationBar 的区别

ios - 在 Swift 3 中读取 JSON 文件时出错

iphone - 在旧版本上安装后,.app 没有可执行路径

objective-c - 当 AXIsProcessTrusted() 为真时,重新启动 OS X 应用程序以执行 CGEventTapCreate()

objective-c - 如何在 NSTableView 之类的东西中插入分隔符?

objective-c - 为什么在针对 ios 5 应用程序时使用特定于 ios 6 的选项仍然可以编译或不会崩溃?

ios - Phonegap验证错误: Unable to validate your application, 包中不包含info.plist