У меня есть объект NSURLConnectionDelegate, обрабатывающий некоторые сообщения SOAP. По сути, я устанавливаю несколько значений свойств, а затем вызываю метод, который создает запрос xml и затем отправляет его на сервер. Объект также является NSXMLParserDelegate, поэтому он может анализировать ответы xml от сервера и соответствующим образом обрабатывать данные.
При использовании объекта я сначала устанавливаю значения для ряда свойств. Счетчик сохранения после по-прежнему равен единице. Затем я вызываю свой первый метод, и тут начинается самое интересное. Каждый раз, когда вызывается пользовательский метод или метод NSURLConnectionDelegate, счетчик сохранения увеличивается на 1. При вызове методов NSXMLParserDelegate этого не происходит. После того, как все коммуникации завершены, и я закончил с объектами, которые он удерживает, подсчитайте его 43. Освобождение объекта не уменьшает количество удержаний, поэтому я получаю объект, который я не могу освободить. Кроме того, объект работает так, как ожидалось.
Существует много кода, и я не совсем уверен, что имеет значение, поскольку на самом деле не похоже, что что-либо, что я делаю внутри методов, вызывает увеличение continueCount. Единственное, что стоит упомянуть, это то, что я вызываю эти методы из фонового потока, но выполняю их в основном потоке:
[tEditor performSelectorOnMainThread:@selector(requestQueueList) withObject:nil waitUntilDone:YES];
NSURLConnectionDelegate
release
? Я имею в виду, чтоperformSelectorOnMainThread
должен автоматически сохранять как объект, так и аргумент до тех пор, пока селектор не будет выполнен, но затем они также должны автоматически освобождаться. Если ваш метод выпуска пуст, количество сохранений будет только расти. - person A-Live   schedule 08.05.2012