iOS3でのこれらの操作に相当するものは何ですか?
[NSOperationQueue mainQueue];
[NSOperationQueue currentQueue];
iOS3でのこれらの操作に相当するものは何ですか?
[NSOperationQueue mainQueue];
[NSOperationQueue currentQueue];
+currentQueue に相当するものは実際にはありませんでした。+mainQueue の場合は、呼び出します
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
メインスレッドで実行する必要がある作業を含むメソッドを使用します。
自分で巻く以外に方法はありません。
このようなものがうまくいくかもしれません: (未テスト)
@interface NSOperationQueue(MainQueueAdditions)
+ (NSOperationQueue *) mainQueue;
@end
@implementation NSOperationQueue(MainQueueAdditions)
+ (NSOperationQueue *) mainQueue {
static NSOperationQueue *queue = nil;
if(queue == nil) queue = [[NSMainOperationQueue alloc] init];
return queue;
}
@end
@interface NSMainOperationQueue : NSOperationQueue {}
@end
@implementation NSMainOperationQueue
- (void) addOperation:(NSOperation *) operation {
[self queueOperationInternal:operation];
}
- (void) addOperationWithBlock:(void (^)(void))block {
[self queueOperationInternal:[NSBlockOperation blockOperationWithBlock:block]];
}
- (void) queueOperationInternal:(NSOperation *) operation {
[[NSRunLoop mainRunLoop] performSelector:@selector(start) target:operation argument:nil order:-[operation queuePriority] modes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
}
@end