Que signifie le “non reconnu sélecteur envoyé à l'instance d'erreur” signifie?
Je suis bloquer dans mon application en raison de l'erreur suivante:
-[NSCFString count]: unrecognized selector sent to instance 0x612b060
Quelqu'un peut-il me dire ce que cela signifie, et comment puis-je trouver la ligne dans mon code avec référence 0x612b060
- le compilateur r u à l'aide?
- Cette question est presque le même que celui-ci ou de nombreux autres, avez-vous essayé de faire une recherche avant de poser la question?
Vous devez vous connecter pour publier un commentaire.
Vous appelez
count
méthode sur un objet (probablement une collection d'e.g tableau, dictionnaire, ou le groupe) qui est rejetée ou n'a pas été initialisé encore.Vous êtes en envoyant le message "compter" sur NSCFString, signifie, en appelant "à compter" de la méthode sur NSString type de données.
Pour trouver le code, vous pouvez utiliser la trace de la Pile, mais je suis sûr de ce que vous faites, c'est:
Attribuer NSString données sur NSArray ou (Array type de données) et d'essayer de les compter.
Plus probable de ce qui se passe parce que vous avez un objet de collection (par exemple, NSArray, NSDictionary) que vous ne conserve pas correctement.
Essayez d'utiliser NSZombies pour trouver l'objet qui est sorti.
Get Info
Variables to be set in the environment
créer une variable appeléeNSZombieEnabled
et définissez sa valeur àYES
. N'oubliez pas de l'activer.Après que vous avez fait de débogage ce problème, vous devez désactiver NSZombies. NSZombies ne sera pas communiqué de la mémoire, il indique simplement les objets comme libérée.
Donc, vous allez vous retrouver dans un avertissement de mémoire, tôt ou tard.
Vous pouvez simplement supprimer la coche en face d'elle pour désactiver NSZombies.
Avez-vous l'intention d'appeler
length
sur votre chaîne?Peut-être quelqu'un aura besoin de ceci:
Quand j'ai eu ce genre de problème que j'ai utilisé:
[ myarray retain];
après
myarray = [NSArray arrayWithObjects: ...];
et cela a fonctionné. Je pense que c'était parce que mon tableau de détruire lui-même trop tôt.
Mais je ne sais pas comment je peut maintenant libérer cet objet?
Juste
[myarray autorelease]
? Est-il quelque chose de contraire à conserver ?Ask Question
bouton sur la page d'accueil. Sinon, votre question ne sera pas visible à la communauté.retain
estrelease
.autorelease
donne la responsabilité de faire appelrelease
pour la conservation d'un objet à l'actuel autorelease pool.Un exemple pratique:
Parfois, il y a une différence pratique dont je ne comprends pas clairement encore.
valueForKey
n'a pas de travail dans SOGo-3.1.4 code en essayant de faire appel à une indisponibilité de la "méthode"ASProtocolVersion
sur lecontext
objet:alors que
objectForKey
fonctionne (et c'est la manière habituelle, à la requête de lacontext
objet elesewhere dans le code).Voir https://github.com/inverse-inc/sogo/pull/217/files