A partir de los documentos:iOS - ¿Cómo verificar si una NSOperation está en un NSOperationQueue?
Un objeto operación puede ser de a lo sumo una cola de operaciones a la vez y este método produce una excepción NSInvalidArgumentException si la operación ya está en otra cola. De forma similar, este método arroja una excepción NSInvalidArgumentException si la operación se está ejecutando actualmente o ya ha finalizado la ejecución.
Entonces, ¿cómo puedo comprobar si puedo agregar con seguridad un NSOperation en una cola?
La única forma que conozco es agregar la operación y luego tratar de detectar la excepción si la operación ya está en una cola o se ha ejecutado antes.
, pero ¿qué ocurre si tengo varias colas de operaciones? ¿Debería revisarlo para cada cola de operación? Puedo hacerlo pero, ¿es esta la mejor manera posible? –
@ xlc0212: Otra solución que puedo pensar es subclase NSOperation, que en realidad es alentada por Apple; y agregue una propiedad booleana "isInQueue" que se marque como YES cuando la agregue a una cola. De esta manera, solo necesita verificar esta propiedad antes de agregar operaciones a las colas. – Zebs
¿cuándo debería marcar la operación? ¿Debo configurarlo manualmente antes de agregarlo en la cola o si debo anular algún método que invocará la cola y luego establecer el indicador –