Je suis nouveau sur ce site, j'espère que vous pouvez aider.développement de l'application ipad: Block_copy ne fonctionne pas
je reçois une erreur de EXC_BAD_ACCESS du code suivant dans la fonction():
typedef int (^BlockDef)();
BlockDef getBlockDef(int d)
{
BlockDef def = Block_copy(^()
{
return d;
});
return def;
}
void function()
{
BlockDef def1 = getBlockDef(1);
BlockDef def2 = getBlockDef(2);
printf("%d\n",def1());
printf("%d\n",def2());
NSMutableArray * arr = [NSMutableArray array];
[arr addObject:def1];
[arr addObject:def2];
printf("%d\n",((BlockDef) [arr objectAtIndex:0])()); // **** EXC_BAD_ACCESS here
printf("%d\n",((BlockDef) [arr objectAtIndex:1])());
}
Ce code fonctionne sans problème dans l'iPhone, mais pas dans ipad. Quel peut être le problème?
De même, dans ipad, lorsque je supprime l'appel Block_copy, il parcourt la même ligne avec succès. C'est bizarre car une fonction non copiée ne devrait pas être retournée ou ne devrait pas être appelée (Dans iphone, j'obtiens un EXC_BAD_ACCESS au premier printf dans cette situation).
Nous vous remercions de votre aide.
sdk est 4.0.2, je n'ai pas de périphérique ipad maintenant (mais je l'aurai demain), j'ai couru ce code en simulateur. La mise à jour vers 4.2 résoudrait-elle ce problème? –
Oui, si vous êtes sur le SDK 4.0 votre sim de l'iPad est 3.2 –
Probablement besoin d'obtenir le SDK 4.2 ainsi que l'iPad. – JeremyP