Для этого можно использовать комбинацию [NSOperationQueue currentQueue] и [NSThread currentThread].
По сути, вам нужно пройтись по операциям в currentQueue и найти операцию, выполняемую в currentThread.
NSOperation не предоставляет доступ к потоку, в котором он запущен, поэтому вам нужно добавить это свойство самостоятельно и назначить его.
Возможно, вы уже подклассифицируете NSOperation и предоставляете main, поэтому добавьте свойство 'thread' к этому подклассу:
@interface MyOperation : NSOperation
@property(nonatomic,strong) NSThread *thread ;
@end
Затем в вашем 'main' назначьте текущий поток этому свойству
myOperation.thread = [NSThread currentThread]
Затем вы можете добавить метод currentOperation:
+(MyOperation *)currentOperation
{
NSOperationQueue *opQueue = [NSOperationQueue currentQueue] ;
NSThread *currentThread = [NSThread currentThread] ;
for( MyOperation *op in opQueue.operations ) {
if( [op isExecuting] && [op respondsToSelector:@selector(thread)] ) {
if( op.thread == currentThread ) {
return ( op ) ;
}
}
}
}
return nil ;
}