NSURLConnection originalRequest выбрасывает исключение в iOS 4, что я могу использовать вместо этого?
В iOS 5 [NSURLConnection originalRequest]
работает нормально, однако в iOS 4 выдает исключение:
- [NSURLConnection originalRequest]: нераспознанный селектор отправлен на экземпляр 0x65609a0
Похоже, что iOS 4.3 SDK не имеет originalRequest
метод.
Что я могу использовать вместо этого, чтобы получить NSURLConnection
оригинальный запрос в iOS 4?
2 ответа
Я сделал следующее: я создал 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];
}
}
Читая заголовочный файл 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, так что вы можете, вероятно, архивировать и разархивировать, чтобы сделать глубокую копию, если это то, что вам нужно.