Continuer à essayer de comprendre les blocs en Objective-C. J'ai la fonction suivante:EXC_BAD_ACCESS si j'appelle directement un bloc Objective-C
typedef void(^TAnimation)(void);
TAnimation makeAnim(UIView *aView, CGFloat angle, CGFloat x, CGFloat y,
CGFloat width, CGFloat height, UIInterfaceOrientation uiio) {
return Block_copy(^{
aView.transform = CGAffineTransformMakeRotation(angle);
aView.frame = CGRectMake(x, y, width, height);
[UIApplication sharedApplication].statusBarOrientation = uiio;
});
}
Lorsque je tente de faire ce qui suit:
TAnimation f = makeAnim(...);
f();
je reçois un EXC_BAD_ACCESS. Toutefois, si je fais ce qui suit à la place:
TAnimation f = makeAnim(...);
[UIView animateWithDuration:0 delay:0 options:0 animations:f completion:NULL];
cela fonctionne très bien. Quel est le problème dans le premier scénario?
Dans le débogueur, quelle ligne indique-t-il l'EXC_BAD_ACCESS? –