Obj-C: Реализация делегата пользовательского подкласса - PullRequest
1 голос
/ 08 июня 2011

В документации ASIHTTPRequest написано:

Для более сложных ситуаций или в тех случаях, когда вы хотите проанализировать ответ в фоновом режиме, создайте минимальный подкласс ASIHTTPRequest для каждого типа запроса и переопределите requestFinished: и failWithError:.

Итак, я создал минимальный подкласс MyRequest, который будет обрабатывать синтаксический анализ в фоновом потоке. Я не переопределил ASIHTTPRequestDelegate, поэтому мой класс делегата реализует этот протокол. Однако эти методы делегата передают ASIHTTPRequest, который (и я бы хотел, чтобы к нему относились), MyRequest, чтобы воспользоваться преимуществами новой функциональности. Как правильно справиться с этим с помощью правил наследования Objective-C?

1 Ответ

3 голосов
/ 08 июня 2011

Делегат предположительно знает, что он работает с 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| */
}
...