0

iOS3でのこれらの操作に相当するものは何ですか?

[NSOperationQueue mainQueue];
[NSOperationQueue currentQueue];
4

2 に答える 2

1

+currentQueue に相当するものは実際にはありませんでした。+mainQueue の場合は、呼び出します

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

メインスレッドで実行する必要がある作業を含むメソッドを使用します。

于 2011-05-12T08:19:18.353 に答える
0

自分で巻く以外に方法はありません。

このようなものがうまくいくかもしれません: (未テスト)

@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
于 2011-05-12T08:38:50.377 に答える