Безопасно ли использовать метод hash для отслеживания NSURLConnections в памяти? - PullRequest
2 голосов
/ 30 сентября 2010

Мой вопрос связан с этим обсуждением: http://www.cocoabuilder.com/archive/cocoa/202211-how-to-get-nsurl-form-nsurlconnection.html

Я отправляю несколько соединений NSURLC для передачи данных, и мне нужно иметь возможность определить, какое конкретное соединение не удалось или удалось установить. Существуют методы NSURLDelegate (didFailWithError и т. Д.), Которые возвращают связанный NSURLConnection. Проблема заключается в том, что в методах делегатов не возвращено NSURLRequest (и в NSURLConnection нет средства доступа NSURL).

Решение, которое я реализовал, состоит в том, чтобы поддерживать NSMutableDictionary, который связывает строку URL, которая была отправлена ​​с результатом метода "hash" этого NSURLConnection.

Я проверил это, и похоже, что оно работает - хэш NSURLConnection, который возвращается в методе делегата, совпадает с хешем из NSURLConnection, который был отправлен изначально.

Мой вопрос: безопасно ли это делать? Есть ли лучший ключ для использования, чем хэш? Я спрашиваю, потому что в моем наивном понимании хеш-код каким-то образом связан с адресом этого объекта в памяти, и кажется возможным, что фоновое приложение или выключение и включение телефона может изменить это значение, так как вещи перезаписываются в память .

Большое спасибо!

1 Ответ

3 голосов
/ 30 сентября 2010

Я обычно использую ASIHTTPRequest, и при выдаче нескольких соединений (одновременно в очереди или параллельно) я использую словарь userInfo для передачи контекста.

«Хэш-IVAR», на который вы ссылаетесь, фактически определен впротокол NSObject - как метод.Он предназначен для использования в хеш-таблице, и поэтому его должно быть достаточно для ваших нужд.

Я бы все же предпочел более первоклассный подход к этой проблеме, делая более явным, какой запросотделка / erroring-аут.

...