Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @interface GHImageLoader : NSObject {}
- + (void)loadImageAtURL:(NSURL *)imageURL completionBlock:(void (^)(NSImage *image))block;
- @end
- #import "GHImageLoader.h"
- static NSUInteger kMaxCuncurrentOperations = 4;
- @interface GHImageLoader ()
- @property (nonatomic, retain) NSOperationQueue *operationQueue;
- + (GHImageLoader *)imageLoader;
- - (void)loadImageAtURL:(NSURL *)imageURL completionBlock:(void (^)(NSImage *image))block;
- @end
- @implementation GHImageLoader
- @synthesize operationQueue;
- - (void)dealloc {
- self.operationQueue = nil;
- [super dealloc];
- }
- + (GHImageLoader *)imageLoader {
- static GHImageLoader *imageLoaderSingleton = nil;
- return imageLoaderSingleton ? : (imageLoaderSingleton = [[GHImageLoader alloc] init]);
- }
- - (id)init {
- self = [super init];
- if (self) {
- self.operationQueue = [[[NSOperationQueue alloc] init] autorelease];
- [self.operationQueue setMaxConcurrentOperationCount:kMaxCuncurrentOperations];
- }
- return self;
- }
- + (void)loadImageAtURL:(NSURL *)imageURL completionBlock:(void (^)(NSImage *image))block {
- [[self imageLoader] loadImageAtURL:imageURL completionBlock:block];
- }
- - (void)loadImageAtURL:(NSURL *)imageURL completionBlock:(void (^)(NSImage *image))block {
- [self.operationQueue addOperationWithBlock:^{
- NSImage *imageLoaded = [[[NSImage alloc] initWithContentsOfURL:imageURL] autorelease];
- dispatch_async(dispatch_get_main_queue(), ^{
- block(imageLoaded);
- });
- }];
- }
- @end
Add Comment
Please, Sign In to add comment