我有NSMutableArray
的子类,实际上处理某种类型的数据,例如Employee
。问题是我不喜欢addObject
insertObject
等等的名称,并希望将其更改为addEmployee
insertEmployee
。
我该如何处理?
答案 0 :(得分:3)
如果您不打算继承超类的方法,那么就不应该使用那个超类!
当你继承它时,它是子类和超类之间的'是'关系。 “Employer是一个NSMutableArray” - 不,这不是真的,因此不会使Employer成为NSMutableArray的子类。此外,将来您可能会使用字典来存储员工(例如映射'name' - >'employee'),然后将表示作为数组继承而无法正常工作。
@interface Employer : NSObject {
NSMutableArray *employees;
}
- (void) addEmployee: (Employee *) employee;
@end
像这样。现在addObject:
对Employee的实例不起作用;只有addEmployee:
有效。另外,你最终只想专门研究像filteredArrayWithPredicate:
这样的方法 - 所以继承它们不会有好处。
答案 1 :(得分:0)
您可以在该调用addEmployee:
中添加方法addObject:
。类似于insertObject:
答案 2 :(得分:0)
您可以继承NSMutableArray
并添加-addEmployee:
等方法,然后将其添加到.h文件中:
- (void)addObject:(id)anObject __attribute__((unavailable("Use -addEmployee:")));
这是一个clang扩展名,会导致编译错误。
参考文献:
How do I flag a function as being deprecated in an iPhone Objective C header file?
http://clang.llvm.org/docs/LanguageExtensions.html#messages-on-deprecated-and-unavailable-attributes