Я использую фреймворк, который использует огромное количество аргументов блока для испускания событий. Из-за лицензирования я не могу выпустить образцы кода, но я все еще могу получить свой код с похожим кодом. Допустим, у вас есть следующий код:Метод литья в Objective C
- (void)begin
{
[MyService doSomething:^{
NSLog(@"Done.");
}];
}
Это прекрасно, но методы, которые я имею дело есть 14 блоков аргументы, большинство из которых принимают несколько параметров, так что это делает его очень трудно читать и трудно проверить без создания повторяющегося кода котельной.
Есть ли способ, я могу указать блок для метода данных экземпляра, что-то вроде:
- (void)doSomethingDelegate
{
NSLog(@"Done.");
}
- (void)begin
{
[MyService doSomething:CALLBACK(self, @selector(doSomethingDelegate))];
}
Где CALLBACK
макроса или родная конструкция. Это возможно?
Вы смотрели в использовании [NSInvocation] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSInvocation_Class/)? – Tim
Вы можете просто вызвать метод из каждого из блоков. Весь «уродливый» код будет в одном месте, и вы можете разделить логику на части. – titaniumdecoy
Почему бы не использовать методы, возвращающие блоки? – vikingosegundo