Je suis à la recherche d'un bug étrange. Le bug se manifeste avec l'affichage de ce message dans le journal de la console:Erreur malloc étrange avec UIImages auto-libérés de la taille spécifiée
BlurApp(5018,0xa00d6500) malloc: *** error for object 0x103b000: pointer being freed was not allocated
Ce message apparaît après l'exécution a quitté ma boucle d'événements. Cela semble se produire lorsque le pool d'autorelease est drainé. Voici le code qui semble déclencher l'erreur:
- (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
J'appelle imageWithImage ainsi:
UIImage* theImage = [self imageWithImage:origImage scaledToSize:rect.size];
theImage est utilisé dans la routine et je suppose que l'appel autorelease prendra soin.
Si je modifie le return newImage;
pour renvoyer [newImage retain];
le message d'erreur ne s'affiche pas.
Maintenant, voici ce qui est très étrange. Cette erreur se produit uniquement avec certaines tailles de newSize. en particulier, il arrive toujours que la taille et la largeur de newSize soient égales à un nombre compris entre 55 et 176, sauf 56, 110, 112, 114 et pas pour les autres valeurs de hauteur et de largeur comprises entre 5 et 300. (hauteur et largeur toujours égal pour tous les tests)
Je pourrais utiliser quelques yeux frais sur ce ... merci!
Cela semble être un bug dans le simulateur 3.0 SDK. Je ne vois pas ces messages d'erreur avec SDK 3.1 du simulateur, et je ne vois pas l'erreur sur l'iPhone. – mahboudz