Warum funktioniert der Objective-C-Block immer noch, ohne ihn auf den Heap zu kopieren?

Ich habe eine einfache Methode in meiner Klasse:

- (void)getFormWithBlock:(DataCenterResultBlock)block {
    [SomeClass doSomeLongOperationWithParam:someParam 
                                  completionBlock:^(NSData *data, NSURLResponse *response) {
                                      //Success
                                      block(aVar, YES);
                                  } errorBlock:^(NSError *error) {
                                      //Failed
                                      block(nil, NO);
                                  }];
}

Ich habe gelesen, dass Sie Blöcke auf den Heap kopieren sollten, wenn Sie etwas asynchron tun, weil sie auf Stapel zugewiesen sind und sobald der Aufrufbaum zurückgespult wird, wird es verschwunden sein.

Aber hier kopiere ich es nicht auf Haufen, aber ich bekomme trotzdem keinen Absturz. Warum? Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage