[iOS] NSOperationQueue をシングルトンで扱う方法
NSOperationQueue をシングルトンで扱うために下記のように NSOperationQueue+SharedQueue.h と NSOperationQueue+SharedQueue.m を追加します。
// NSOperationQueue+SharedQueue.h #import <Foundation/Foundation.h> @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