我有一个通用的HTTP请求类型:
@interface Request: NSObject
- (id) parseResponseData: (NSData *) data;
@end
我可以注释以获得一些泛型支持:
@interface Request<__covariant T>
- (T) parseResponseData: (NSData *) data;
@end
现在Xcode正确地建议了特定的返回类型:
Request<NSString*> *request = [Request new];
NSNumber *bar = [request parseResponseData:nil]; // I get a warning, nice!
我还有一个加载Webservice
的{{1}}类,并返回Request
的可空实例:
T
有没有办法在Objective-C中表示加载@interface Webservice
- (id) loadSynchronously: (Request *) request;
@end
会返回Request<Foo*>
而不是Foo*
?
我提出的最好的方法是反转电话:
id
这是一个有趣的黑客,但不是一个好的API。也许有一个类似的黑客潜伏在某个可以更好的地方?