Por que o bloco Objective-C ainda funciona sem copiá-lo para o heap?
Eu tenho um método simples na minha aula:
- (void)getFormWithBlock:(DataCenterResultBlock)block {
[SomeClass doSomeLongOperationWithParam:someParam
completionBlock:^(NSData *data, NSURLResponse *response) {
//Success
block(aVar, YES);
} errorBlock:^(NSError *error) {
//Failed
block(nil, NO);
}];
}
Eu li que você deve copiar blocos para o heap, se você estiver fazendo algo de forma assíncrona, porque eles são alocados na pilha e uma vez que a árvore de chamada retrocederá, ela desaparecerá.
Mas aqui, eu não estou copiando para o heap, mas ainda não tenho nenhum acidente. Por quê? obrigado