Как вы выполняете задачу «загрузить что-то в фоновом режиме»? Если вы используете асинхронный метод, который вызывает ваш объект NSOperation, это, вероятно, ваша проблема. Я предполагаю, что в основном методе вашей NSOperation вы начинаете загрузку с помощью асинхронного метода, и этот метод должен позже вызвать ваш NSOperation. Проблема заключается в том, что после возвращения основного метода операция NSO считается завершенной, поэтому, когда ваша асинхронная загрузка пытается перезвонить вашей операции NSOperation, она завершится неудачей, поскольку операция NSO уже завершена и освобождена. Ваше дополнительное удержание исправляет это, поддерживая NSOperation даже после того, как NSOperationQueue закончен с ним. Вы должны исправить это, используя метод синхронной загрузки внутри NSOperation.
Если вы уже используете метод синхронной загрузки в NSOperation, то я не уверен, в чем может быть ваша проблема.