Я ищу хороший способ выполнения селектора на главном потоке с двумя параметрамиХороший способ выполнить селектор в основном потоке с двумя параметрами?
мне очень нравится с помощью
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
метода, только теперь у меня есть два параметра.
Так в основном у меня есть делегат, который мне нужно уведомить, когда изображение загружается:
[delegate imageWasLoaded:(UIImage *)image fromURL:(NSString *)URLString;
Но метод, где я это может быть использовано в фоновом потоке, и делегат будет использовать это изображение для обновления пользовательского интерфейса, поэтому это необходимо сделать в основном потоке. Поэтому я действительно хочу, чтобы делегат был также уведомлен в основном потоке.
Итак, я вижу один вариант - я могу создать словарь, таким образом у меня есть только один объект, который содержит два параметра, которые мне нужно передать.
NSDictionary *imageData = [NSDictionary dictionaryWithObjectsAndKeys:image, @"image", URLString, @"URLstring", nil];
[(NSObject *)delegate performSelectorOnMainThread:@selector(imageWasLoaded:) withObject: imageData waitUntilDone:NO];
Но этот подход не кажется мне правильным. Есть ли более элегантный способ сделать это? Возможно, используя NSInvocation? Спасибо заранее.
Это правильное решение pre-GCD, и если это будет часто использоваться, его можно легко поместить в пользовательский метод 'performSelectorOnMainThread: withObject: withObject:'. –
Спасибо, это то, что я искал! – dariaa
Должен ли я освобождать что-нибудь после использования? (Поскольку аргументы сохранены) – b123400