NSOperationQueue をシングルトンで扱うために下記のように NSOperationQueue+SharedQueue.h と NSOperationQueue+SharedQueue.m を追加します。
// NSOperationQueue+SharedQueue.h
#import
@interface NSOperationQueue (SharedQueue)
+ (NSOperationQueue *) sharedOperationQueue;
- (void)performSelectorOnBackgroundQueue:(SEL)aSelector withObject:(id)anObject;
@end
#define SHARED_OPERATION_QUEUE [NSOperationQueue sharedOperationQueue]
// NSOperationQueue+SharedQueue.m
#import "NSOperationQueue+SharedQueue.h"
@implementation NSOperationQueue (SharedQueue)
+ (NSOperationQueue *) sharedOperationQueue {
static dispatch_once_t pred;
static NSOperationQueue* sharedQueue;
dispatch_once(&pred, ^{
sharedQueue = [[NSOperationQueue alloc] init];
});
return sharedQueue;
}
- (void) performSelectorOnBackgroundQueue:(SEL)aSelector withObject:(id)anObject {
NSOperation* operation = [[NSInvocationOperation alloc]
initWithTarget:self
selector:aSelector
object:anObject];
[[NSOperationQueue sharedOperationQueue] addOperation:operation];
[operation release];
}
@end
[参考]
・iphone - Sharing NSOperationQueue across View Controllers? - Stack Overflow
・Tutorial: Asynchronous HTTP Client Using NSOperationQueue | iPhone Programming Tutorials
・objective c - Global NSOperationQueue - Stack Overflow
・Cocoa Tutorial: NSOperation and NSOperationQueue | Cocoa Is My GirlfriendCocoa Is My Girlfriend
・Library/NSOperationQueue+SharedQueue.h at master · docchang/Library · GitHub
・Library/NSOperationQueue+SharedQueue.m at master · docchang/Library · GitHub