Je semble avoir une libération trop zélée qui se passe dans mon application obj-C - Obtenir message d'erreur - Myobj libération: message envoyé à l'instance désallouée 0x5633b0 Je sais la classe de l'instance de l'objet causant le problème, mais cette classe est utilisée partout pour créer Nombreux cas. Ma pensée est que je pourrais mettre un peu de journalisation dans la méthode d'initialisation de la classe pour consigner tout 0x5633b0 correspond à qui devrait m'aider à traquer vers le bas où l'instance est créée. Quel est exactement le 0x5633b0 et y at-il une façon je peux accéder à cette valeur dans le code pour le journal Qu'est-ce qui a le mieux fonctionné pour moi quand j'ai rencontré des problèmes similaires récemment était le suivant: Sous sous Project-Edit Active Executable - Arguments tab - Section Variables d'environnement J'ai ajouté et mis à YES les variables suivantes: NSAutoreleaseFreedObjectCheckEnabled. NSZombieEnabled et NSDebugEnabled. Dans le menu Exécuter, j'ai sélectionné Enable Guard Malloc. Avec ces paramètres, le débogueur a fourni plus de conseils sur ce qui ne va pas avec mon code. (J'ai trouvé ces conseils ici) a répondu Mar 4 10 à 9:11 Activer Guard Malloc doesn39t travail lors du débogage sur un appareil, au moins je can39t et ce post le confirmer: discussions. applethread1572993start0amptstart0 ndash JeroenEijkhof Aug 21 11 at 5:23 JeroenEijkhof est droite. Le malloc de garde ne fonctionne pas dans l'appareil. Et ils peuvent être activés dans l'onglet 39diagnostice39, pas besoin de définir dans env var. Mais NSAutoreleaseFreedObjectCheckEnabled peut avoir besoin de définir comme env var. Ndash karim Oct 3 14 at 8:00 0x5633b0 est probablement l'adresse de l'objet désalloué (la valeur de myobj). Vous pouvez utiliser NSLog ou printf avec p pour l'imprimer. Vous pouvez également utiliser le profileur d'instruments pour trouver l'objet désalloué. 1. Démarrez le profiler: 2. Sélectionnez les Zombies et démarrez le profileur. 3. Cliquez sur le simulateur jusqu'à ce que vous frappez votre cas d'erreur désalloué Youre ne gère pas votre mémoire correctement - youre appelant autoréglementation de libération sur un objet plus de fois que youre appelant retenir. Assurez-vous que vous suivez toutes les règles énoncées dans le Guide de programmation de gestion de la mémoire pour le cacao. 0x5633b0 est juste l'adresse de l'emplacement de mémoire à laquelle l'objet est stocké. Une chose que vous pouvez essayer de faire est d'ajouter un code à la méthode init: Si vous avez d'autres méthodes init (par exemple, initWithCoder. Qui est appelé pour les objets instanciés à partir d'un XIB), assurez-vous de mettre cet extrait dans ces méthodes aussi bien . Mettez un point d'arrêt sur la ligne NSLog et puis voir quand il est touché. Notez qu'il peut être frappé plusieurs fois, si un objet est alloué à cette adresse, désalloué, puis un autre objet se trouve réaffecté à la même adresse. Le dernier coup avant l'accident est celui que vous voulez. Réponse Mar 2 09 at 2:24 Comment savez-vous l'adresse du symbole avant Isn39t il différent chaque fois que vous exécutez le code. Au moins ce que j'ai remarqué. Utiliser quelque chose comme le symbole quotinfo 0xabcdfgquot dans la console de débogage m'a donné de meilleurs résultats que votre probosal. ndash leviathan 18 janvier 11 à 10:15 Votre réponse 2017 Stack Exchange IncLearn Application Iphone ltkeygtNSAppTransportSecurityltkeygt ltdictgt ltkeygtNSExceptionDomainsltkeygt ltdictgt ltkeygttest. testdomainltkeygt ltdictgt ltkeygtNSIncludesSubdomainsltkeygt lttruegt ltkeygtNSTemporaryExceptionRequiresForwardSecrecyltkeygt ltfalsegt ltdictgt NSString strURL google NSURL URL NSURL URLWithString: NSString stringWithFormat :, strUrl stringByAddingPercentEncodingWithAllowedCharacters: demande NSCharacterSet URLQueryAllowedCharacterSet NSURLRequest NSURLRequest requestWithURL: Session URL NSURLSession NSURLSession sharedSession NSURLSessionDataTask session de tâche dataTaskWithRequest: demande completionHandler: (données NSData, réponse NSURLResponse, NSError erreur) dict NSJSONSerialization JSONObjectWithData: données keyArray dict objectForKey: vidéos NSLog (réponse:, recettes) tblvw reloadData ltFBSDKLoginKitFBSDKLoginKit. hgt import import ltFBSDKCoreKitFBSDKCoreKit. hgt - (BOOL) demande: (UIApplication) Application openURL: (NSURL) url sourceApplication: (NSString) sourceApplication annotation: (id) annotation retour demande FBSDKApplicationDelegate sharedInstance: application openURL: url sourceApplication: sourceApplication annotation: annotation - (void) applicationDidBecomeActive: (UIApplication) demande FBSDKAppEvents ActivateApp - (BOOL) application: (UIApplication) didFinishLaunchingWithOptions d'application: (NSDictionary) launchOptions retour FBSDKApplicationDelegate sharedInstance demande: didFinishLaunchingWithOptions: launchOptions - (IBAction) facebookLogin: (id) sender FBSDKLoginManager connecter FBSDKLoginManager alloc initialisation si ( FBSDKAccessToken currentAccessToken) NSLog (le jeton est disponible. , FBSDKAccessToken currentAccessTokentokenString) auto fetchUserInfo logInWithReadPermissions de connexion d'autre: email fromViewController: self gestionnaire: (résultat FBSDKLoginManagerLoginResult, erreur NSError) si (erreur) NSLog (Connexion erreur de processus) else if (result. isCancelled) NSLog (Connexion utilisateur annulé) else NSLog (Connexion succès) si (result. grantedPermissions containsObject: email) NSLog (résultat est:, résultat) auto fetchUserInfo autre SVProgressHUD showErrorWithStatus:. Facebook erreur email de permission - (void) fetchUserInfo if (FBSDKAccessToken currentAccessToken) NSLog (Token est disponible, FBSDKGraphRequest alloc initWithGraphPath: (Connexion FBSDKGraphRequestConnection, résultat id, erreur NSError) if (erreur) NSLog (résultats:, résultat) Résultat d'email NSString objectForKey: email NSString userId result objectForKey: id
No comments:
Post a Comment