Obj-C:实现自定义子类的委托

时间:2011-06-07 21:59:22

标签: objective-c inheritance delegates subclass asihttprequest

ASIHTTPRequest documentation中,它说:

  

对于更复杂的情况,或者你想在后台解析响应的地方,为每种类型的请求创建一个ASIHTTPRequest的最小子类,并覆盖requestFinished:和failWithError:。

所以我创建了一个最小的子类MyRequest,它将在后台线程中处理解析。我没有覆盖ASIHTTPRequestDelegate,所以我的委托类实现了该协议。但是,这些委托方法会传递ASIHTTPRequest,这是({我希望被视为)MyRequest,以利用新功能。用Objective-C的继承规则处理这个问题的正确方法是什么?

1 个答案:

答案 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| */
}