I'm developing an iPad app. It uses an NSOperation to download something in the background, processed by an NSOperationQueue. I'm finding that, unless I add a retain to the NSOperation, I hit a crash after the operation's action is performed. NSOperationQueue's addOperation says it retains the NSOperation, and the NSOperation itself retains the target object. Hence, I'm not understanding why my extra retain is needed.
This wouldn't hinder my progress, except I am trying to implement the pattern of cancelling the async operation and creating a new one in its place. I can't develop on iPhone OS 4.0 as yet (which provides waitUntilFinished), so i need another way of knowing it is safe to release my extra retain (or find a way to not have the extra retain at all).
any suggestions?