1. The difference between NSoperation and NSInvocationOperation
An NSoperation object is a one-shot object, that is, it performs its task once and cannot be used to restart it.
The NSInvocationOperation class is a specific subclass of NSOperation that controls the execution of a single encapsulated task, indicated as a call. You can use this class to start an operation consisting in invoking a selector on a specified object. This class implements a non-competitive operation.
2. What happens when we add NSOperation or NSInvocationOperation to NSoperationQueue
You typically perform operations by adding them to the operation queue (an instance of the NSOperationQueue class). The operational queue performs its operations either directly, running them on secondary threads, or indirectly using the libdispatch library (also known as Grand Central Dispatch)
3. Which one is the best
I think the word Best may vary depending on your situation :)
source share