objective-ccocoa-touchnsinvocationoperation

Setting more than one argument for NSInvocationOperation


-[NSInvocationOperation initWithTarget:selector:object:] only accepts one object to be passed as an argument for the method that will be called. I want to use two arguments; how can I do that?

This is my code:

- (void)loadImage:(NSURL *)imageURL
{
    NSOperationQueue *queue = [NSOperationQueue new];
    NSInvocationOperation *operation = [[NSInvocationOperation alloc]
                                        initWithTarget:self
                                        selector:@selector(requestRemoteImage:)
                                        object:imageURL];
    [queue addOperation:operation];
}

- (void)requestRemoteImage:(NSURL *)imageURL
{
    NSData *imageData = [[NSData alloc] initWithContentsOfURL:imageURL];
    UIImage *image = [[UIImage alloc] initWithData:imageData];

    [self performSelectorOnMainThread:@selector(placeImageInUI:) withObject:image waitUntilDone:YES];
}

Solution

  • you could send a dictionary with all the values you want