właśnie odkrył bloki realizacji:klienta blok Zakończenie dla własnej metody
completion:^(BOOL finished){
}];
Co muszę zrobić, aby mieć własną metodę wziąć blok zakończeniu?
właśnie odkrył bloki realizacji:klienta blok Zakończenie dla własnej metody
completion:^(BOOL finished){
}];
Co muszę zrobić, aby mieć własną metodę wziąć blok zakończeniu?
1) określić swój własny blok zakończenia,
typedef void(^myCompletion)(BOOL);
2) Utwórz metodę, która ma swoje zakończenie blok jako parametr,
-(void) myMethod:(myCompletion) compblock{
//do stuff
compblock(YES);
}
3) Jest to, jak go używać,
[self myMethod:^(BOOL finished) {
if(finished){
NSLog(@"success");
}
}];
blokami zmiennych są podobne składni funkcjonować wskaźniki w C.
Ponieważ składni brzydki są często typedefed jednak mogą one również zostać uznane normalnie.
typedef void (^MyFunc)(BOOL finished);
- (void)myMethod:(MyFunc)func
{
}
Zobacz tę odpowiedź za brak typedef:
ok, dzięki, sprawdzę to, to jest trochę skomplikowane, skąd mam typedef? – user2206906
Możesz umieścić typedef w pliku nagłówkowym, przed '@ interfejsem'. –
zdefiniować blok jako typ niestandardowy:
typedef void (^ButtonCompletionBlock)(int buttonIndex);
następnie użyć go jako argument do metody:
+ (SomeButtonView*)buttonViewWithTitle:(NSString *)title
cancelAction:(ButtonCompletionBlock)cancelBlock
completionAction:(ButtonCompletionBlock)completionBlock
Dzwoniąc to w kodzie to jest tak jak w każdym innym bloku:
[SomeButtonView buttonViewWithTitle:@"Title"
cancelAction:^(int buttonIndex) {
NSLog(@"User cancelled");
}
completionAction:^(int buttonIndex) {
NSLog(@"User tapped index %i", buttonIndex);
}];
Jeśli chodzi o czas, aby wywołać blok, wystarczy zadzwonić completionBlock()
(gdzie completionBlock
to nazwa lokalnej kopii bloku).
Medal dla ciebie, miły panie. – Josh
compclock (YES) to to samo co return compclock = YES? – user2206906
Tak, masz to, możemy umieścić compclock (TAK)/compclock (NO) w zależności od wymagań, możemy zwrócić NIE dla zakończenia awarii tutaj –
śledzić zwróconą wartość: if (zakończone) NSLog (@ "sukces"); else NSLog (@ "niepowodzenie"); –