【问题标题】:How to use generics while subclassing collection class?如何在继承集合类时使用泛型?
【发布时间】:2016-01-11 21:59:47
【问题描述】:
例如我有几个类:
@interface SomeModel : NSObject
@end
@interface SomeAnotherModel : NSObject
@property NSArray<SomeModel *> *modelsArray;
@end
如果我需要改用 NSArray 子类怎么办?
@interface SomeModel : NSObject
@property ArraySubclass<SomeModel *> *modelsArray;
@end
如何实现 ArraySubclass 来支持像 NSArray 这样的泛型?
【问题讨论】:
标签:
ios
objective-c
generics
【解决方案1】:
这就是你如何使用泛型支持声明你的一个类:
.h 文件:
@interface ArrayLikeClass<ObjectType>: NSObject
- (void)add:(ObjectType)obj;
- (ObjectType)objectAtIndex:(NSInteger)index;
@end
.m 文件
@implementation ArrayLikeClass
- (void)add:(id)obj {
// ...
}
- (id)objectAtIndex:(NSInteger)index {
// ...
}
@end
您将您的类声明为泛型,但是在您的实现文件中,您将泛型参数替换为id。