0

アプリで NSOperationQueue を使用していますが、操作に複数の引数を設定したいのですが、どうすればよいですか?

   NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
   NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(methodCall) object:nil];
  [queue addOperation:operation];
  [operation release];
4

2 に答える 2

6

必要なデータを使用して配列または辞書を作成する必要があります。

元:

NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
NSDictionary *argumentDictionary = [NSDictionary dictionaryWithObjectsAndKeys:object1, @"Object1Key", object2, @"Object2Key", nil];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(methodCall:) object:argumentDictionary];
[queue addOperation:operation];
[operation release];

そして、- (void)methodCall:(NSDictionary *)argumentDictionaryそのディクショナリに格納されているオブジェクトと値を使用できます。

于 2012-03-30T00:37:33.537 に答える
2
//Correct approach is to use NSInvocation
//create nsinvocation obj
SEL selector= @selector(methodName:);
NSMethodSignature * sig= [[self class] instanceMethodSignatureForSelector: selector];
NSInvocation * invocation=[NSInvocation invocationWithMethodSignature:sig];
[invocation setTarget: self];   
[invocation setSelector:selector];
[invocation setArgument:&firstArgument atIndex: 2];
[invocation setArgument:&secArgument atIndex: 3];
//operation with invocation
NSInvocationOperation* operation = [[NSInvocationOperation alloc] initWithInvocation:invocation];
[opQueue addOperation:operation];
于 2014-11-11T14:04:55.220 に答える