Я еще не сталкивался с этой проблемой, но это также может работать без привязки вашего объекта делегата:
Поскольку все методы делегата получают вызывающий объект Connection в качестве параметра и вы также знаете свой фактический активный объект Connection (или nil), просто проигнорируйте действия делегирования, сравнив два объекта. Таким образом, отмененный «призрачный» объект Connection может по-прежнему вызывать делегат, но не мешать его внутренним элементам.
- (void) connection:(NSURLConnection*) connection didReceiveData:(NSData*) data
{
if(connection != _URLConnection){return;}
...
[_incomingData appendData:data];
...
}
где _URLConnection
- это свойство в вашем делегате, для которого установлено активное соединение, или ноль.