Je reçois le message d'erreur suivant que je ne peux pas comprendre pourquoi son événement parce que je n'utilise aucun UIImageView. Parfois, je reçois la même erreur, mais c'est une calayeuse?!?
Sa valeur en mentionnant également que j'ai 2 autres contrôleurs et 2 contrôleurs et un contrôleur de base où ce code réside. P>
EDIT: P>
Ceci est la structure de mon projet P>
MainViewController & Sa NIB - AccueilViewController à NIB P>
MainViewController-Landscape & Sa NIB - AccueilViewController-Paysage dans NIB P>
homebevilleControllerbase - pas de nib - Classe de base où toutes les sorties et code de configuration de l'élément existe. - Les points de vente sont utilisés par les deux classes d'enfants ci-dessous. - Les points de vente sont liés à des commandes dans chacune des nibrations principales. P>
homevieController - Hérités de HomeViewControllerbase P>
homeviewController-paysage - Hérités de HomeViewControllerbase P>
Donc, ce qui se passe est que la classe enfant tente de traiter sa classe de base (qui contient tous les points de vente). Je l'ai conçu de cette façon d'éviter la duplication du code dans les différentes visiteurs d'orientation. P>
-[UIImageView bestSellItemTapped:]: unrecognized selector sent to instance 0x681c2b0 2011-04-12 15:45:26.665 [21532:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImageView bestSellItemTapped:]: unrecognized selector sent to instance 0x681c2b0' *** Call stack at first throw: ( 0 CoreFoundation 0x00dc85a9 __exceptionPreprocess + 185 1 libobjc.A.dylib 0x00f1c313 objc_exception_throw + 44 2 CoreFoundation 0x00dca0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 3 CoreFoundation 0x00d39966 ___forwarding___ + 966 4 CoreFoundation 0x00d39522 _CF_forwarding_prep_0 + 50 5 UIKit 0x0001a4fd -[UIApplication sendAction:to:from:forEvent:] + 119 6 UIKit 0x000aa799 -[UIControl sendAction:to:forEvent:] + 67 7 UIKit 0x000acc2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527 8 UIKit 0x000ab7d8 -[UIControl touchesEnded:withEvent:] + 458 9 UIKit 0x002ad4de _UIGestureRecognizerSortAndSendDelayedTouches + 3609 10 UIKit 0x002adc53 _UIGestureRecognizerUpdateObserver + 927 11 CoreFoundation 0x00da989b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27 12 CoreFoundation 0x00d3e6e7 __CFRunLoopDoObservers + 295 13 CoreFoundation 0x00d071d7 __CFRunLoopRun + 1575 14 CoreFoundation 0x00d06840 CFRunLoopRunSpecific + 208 15 CoreFoundation 0x00d06761 CFRunLoopRunInMode + 97 16 GraphicsServices 0x010001c4 GSEventRunModal + 217 17 GraphicsServices 0x01000289 GSEventRun + 115 18 UIKit 0x00028c93 UIApplicationMain + 1160 19 0x000027a9 main + 121 20 0x00002725 start + 53 ) terminate called after throwing an instance of 'NSException'
3 Réponses :
Lorsque vous avez allocé votre uibutton code>, vous avez marqué que
AutoRelease code>, cela pourrait être la raison du crash car il existe des possibilités de réclamer
Mainbutton code> Par le système,
UIButton *mainButton = [[[UIButton alloc]init] autorelease];
Enlevé l'autorelease et obtenez la même erreur sauf de Calayer
Ce n'est pas le problème. Vous devez libérer Mainbutton code>. Votre autorelease était correcte. Si vous le supprimez, alors vous devez libérer explicitement
Mainbutton code> après l'avoir ajouté à son SuperView.
est le Ajouter un En réalité, ajoutez-en une autre nslog au début de ViewController code> Ce code est toujours en vie lorsque le bouton est taraudé? Une erreur comme celle-ci (objet non liée -
uiimageview code> dans ce cas signifie que vous avez un pointeur sur une zone de la mémoire libérée et réutilisée pour autre chose (
uiImageView code> Dans ce cas). P>
NSLOG () Code> Impression sur la méthode -DeAlloc du contrôleur de vue et assurez-vous qu'il n'est pas déclenché avant de toucher le bouton. P>
configureBestSellitems code> -
nslog (@ "Je suis% x", auto); code> (oui,% x, pas% @). Cela imprimera l'adresse de votre contrôleur code> code> - Comparez-le avec l'adresse de l'objet de crash (comme dans "Sélecteur non reconnu envoyé à l'instance 0x681c2b0 em>" - voir si elle imprime "Je suis 0x681C2B0" Initialement) P>
@Svd - J'ai supprimé le [Super Dealloc] des contrôleurs de l'enfant et cela semblait fonctionner, mais je ne suis pas sûr si le contrôleur de base sera jamais publié maintenant !?
Supprimer [Super DealLoc] Code> est la mauvaise chose à faire. Vous avez clairement un problème avec tout le contrôleur
auto code> étant distribué de manière inattendue, mais en supprimant
[Super Dealloc] Code> Vous masquez le problème, ne résolvez pas. Vous devriez publier plus de code associé à la manière dont votre contrôleur d'affichage principal est instancié et présenté. Cela devrait être où le problème est.
@Thelearner Suppression de [Super DealLocC] confirme que vous avez une version inattendue quelque part, mais certainement pas une solution.
@Svd Je suis dans la salle de discussion sur iPhone / iPad si vous avez d'autres q's - appréciez votre aide
OK, le problème se passe-t-il alors lorsque vous passez au paysage? Ou quand vous passez au paysage et à l'arrière? Partagez-vous les bestsellscrollView entre votre paysage et votre portrait? Vous voudrez peut-être ajouter des points d'arrêt (ou NSLog () s) pour traiter les méthodes de transloc de points de vue et voir s'ils sont libérés à un moment inattendu.
Lorsque la méthode principale: la méthode exécute, DealLoc est appelé à domicileVendontroller et à son tour homévoyantControllerbase que je ne peux pas comprendre. Ensuite, lorsque vous passez du portrait à Payscape Dealloc, on appelle le paysage de la maisonViewController, puis de la maisonViewControllerbase - Donc, DealLoc est appelé juste avant la présentation de la vue - je ne comprends pas cela.
Il y a 2 meilleures ventes Schollviews - une sur chaque nib d'orientation qui sont liées à un seul point de vente
Est-ce que le Self.LeScapeviewController conserve le contrôleur d'affichage?
Avoir toujours le même problème, même avec mon nouveau design - les homeViewControlers appellent DealLoc - je ne peux pas déterminer pourquoi! Toute aide serait grandement appréciée
Si vous travaillez avec InterfaceBuilder et que vous avez fait connecter / relier des éléments d'interface graphique aux ibactions / méthodes dans le fichier d'en-tête des contrôleurs cliquez avec le bouton droit de la souris sur em> ou "cntrl + click" em> Cet élément graphique qui provoque l'erreur d'être connecté / lié à des méthodes toujours existantes uniquement. p>
Une chose que je remarque, c'est que vous effectuez le contenu de la vision de ScrollView 150 fois quelque chose pendant que vous créez 151 boutons.
Duplicaté possible de Comment puis-je déboguer 'Sélecteur non reconnu envoyé à Erreur d'instance