À un certain point (cohérent) lorsque mon application est en cours d'exécution, je reçois systématiquement le message d'erreur xcode
Terminé en raison d'une erreur de mémoire.
Je ne trouve pas le code à l'origine de l'erreur, mais je peux savoir quel code est proche de l'erreur (à l'aide de points d'arrêt).
L’erreur est provoquée directement après le retour d’une certaine cellule lors de l’implémentation du logiciel.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewDataSource
méthode déléguée. Je peux confirmer qu'il renvoie un UITableViewCell
valide, mais je pense qu'expliquer et publier cette méthode serait une perte de temps. Cependant, je soupçonne que cela pourrait être causé par une allocation de mémoire rapide et massive.
Cela dit certainement Terminated due to memory error
, pas de pression de la mémoire.
Je voudrais savoir ce que le message signifie vraiment. De plus, y a-t-il un moyen de déboguer ce message? Aucun rapport d'incident n'est généré.
J'utilise ARC et iOS 7.
J'avais cette erreur et je ne pouvais pas comprendre ce qui n'allait pas.
Après quelques recherches, j'ai découvert que j'avais oublié de désactiver les zombies.
Pour désactiver, procédez comme suit:
J'étais confronté au même problème. ("Terminé en raison d'une erreur de mémoire") J'avais essayé toutes les réponses précédentes mais rien ne fonctionnait pour moi. Ensuite, je débogue mon code et trouve une boucle for en cours d'exécution pour un temps infini avec l'allocation de mémoire à un tableau avec une valeur nulle à chaque fois.
Merci.
J'ai eu exactement le même problème. Je pensais que mon programme avait une fuite de mémoire ou utilisait trop de mémoire. J'utilise des instruments et j'utilise le profil d'allocation et le programme fonctionne bien. De plus, j'ai exécuté le programme par périphérique assez longtemps, et cela fonctionne également très bien.
J'utilise aussi l'iPad de 3e génération pour le débogage, cela peut être causé par la lenteur du périphérique ou du bogue, il semble qu'il s'agisse simplement d'un problème Xcode et d'un problème Xcode. Pas le problème de fuite de mémoire ou d'allocation.
Si vous vous en assurez avec des instruments et l'application en cours d'exécution sur l'appareil lui-même et de travailler
J'utilisais Tesseract pour l'OCR et lorsque mon texte cible a été numérisé, un fichier GIF était censé être lu. Lorsque le GIF a commencé à jouer, il y avait une pointe de mémoire, de 70 à 80 Mo à 450 Mo. Le problème était que GIF prenait trop de mémoire, l'application se bloquait et Xcode montrait ce message. J'ai donc supprimé l'image concernée de la vue d'ensemble du ViewController.
imageView.removeFromSuperview
Après cela, l'application atteindrait toujours 450 Mo, mais serait immédiatement libérée et descendrait à 40 Mo.
Modifiez le schéma. Sous Diagnostics, vous trouverez plusieurs options pour protéger les allocations. Reportez-vous à la documentation pour plus de détails .
La question est: dit-il vraiment "terminé en raison d'une erreur de mémoire" et non "pression"? Enregistrez les instruments si votre application manque de mémoire, si l'application semble manquer de mémoire, c'est sur quoi vous devriez vous concentrer, quel que soit le message exact.
Redémarrer l'appareil a fonctionné pour moi. Le message "Terminé en raison d'une erreur de mémoire" a cessé de s'afficher.