在ASIHTTPRequest
documentation中,它说:
对于更复杂的情况,或者你想在后台解析响应的地方,为每种类型的请求创建一个ASIHTTPRequest的最小子类,并覆盖requestFinished:和failWithError:。
所以我创建了一个最小的子类MyRequest
,它将在后台线程中处理解析。我没有覆盖ASIHTTPRequestDelegate
,所以我的委托类实现了该协议。但是,这些委托方法会传递ASIHTTPRequest
,这是({我希望被视为)MyRequest
,以利用新功能。用Objective-C的继承规则处理这个问题的正确方法是什么?
答案 0 :(得分:3)
代表可能知道它正在使用MyRequest
。在这种情况下,它可以在方法体中进行检查转换:
- (void)someDelegateMethod:(ASIHTTPRequest *)sender
{
NSAssert([sender isKindOfClass:[MyRequest class]],
@"%s: Request %@ must be kind of MyRequest.", __func__, sender);
MyRequest *req = (MyRequest *)sender;
/* use |req| */
}