Wenn ich den folgenden Code:Firebase und iOS: Kann Variable in Block zurückzukehren trotz ich die __block Bezeichner verwenden
(int) function{
__block int count = 0;
[[[_ref child:@“lambda”] child:serial] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
// Get user value
count++;
NSLog(@“Inside: %i", count);
} withCancelBlock:^(NSError * _Nonnull error) {
}];;
NSLog(@“Outside: %i", count);
return count;
}
ich folgende Ausgabe:
Innen: 1 Außen : 0
und wenn ich es als eine Funktion gibt die Funktion 0 und nicht 1 nennen.
Ich bin mit der __block Kennung aber trotz, dass der Variable nicht geändert zu bleiben scheint. Warum?
Wie kann ich die Funktion 1 zurückgeben, wenn der Inside-Wert 1 ist?
Sie sind verwirrt über asynchrone und synchrone Ausführung von Code. Dieser Block wird * einige Zeit später * ausgeführt, während der äußere 'NSLog()' sofort ausgeführt wird. – Droppy