NSURLConnection originalRequest выдает исключение в iOS 4, что я могу использовать вместо этого? - PullRequest
1 голос
/ 30 декабря 2011

В iOS 5 [NSURLConnection originalRequest] работает нормально, однако в iOS 4 выдает исключение:

- [NSURLConnection originalRequest]: нераспознанный селектор, отправленный экземпляру 0x65609a0

Похоже, в iOS 4.3 SDK нет метода originalRequest.

Что я могу использовать вместо этого, чтобы получить исходный запрос NSURLConnection в iOS 4?

Ответы [ 2 ]

3 голосов
/ 30 декабря 2011

Чтение заголовочного файла NSURLConnection.h - вы увидите следующий комментарий:

When created, an NSURLConnection performs a deep-copy of the
    NSURLRequest.  This copy is available through the
    -originalRequest method.  As the connection performs the load,
    this request may change as a result of protocol
    canonicalization or due to following redirects.
    -currentRequest can be used to retrieve this value.

Поскольку этот метод был представлен в iOS5, вы не сможете использовать его в iOS4.3 или более ранней версии. Так что в этом случае вам нужно будет дублировать функциональность нового метода.

Если вы используете очень простой объект NSURLRequest, это может быть так же просто, как сделать [запрос копии] перед инициализацией NSURLConnection, в противном случае вам нужно будет посмотреть, как реализовать глубокую копию. NSURLRequest реализует NSCoding, так что вы можете архивировать и разархивировать, чтобы сделать глубокую копию, если это то, что вам нужно.

1 голос
/ 01 января 2012

Я сделал следующее: я создал NSString *origiOS4 и, если работающей ОС является iOS4, я инициализирую строку и присваиваю ей значение urls. Затем в методе connection:didReceiveData: я читаю значение из origiOS4.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    float version = [[[UIDevice currentDevice] systemVersion] floatValue];
    if (version < 5) {
        origiOS4 = [[NSString alloc] initWithString:response.URL.absoluteString];
    }
}
...