2010-07-15 9 views
2

J'apprends à développer des applications iPhone et j'ai rencontré un problème intéressant. Dans ma classe de contrôleur de vue, j'ai une variable int que je @synthesize et surcharger le setter (bien que cela ne soit pas nécessaire. Quand je lance l'application, je reçois cette retraçage:NSObject doesNotRecogniseSelector plante le programme

*** pile d'appel au premier jet: (

0 CoreFoundation      0x024e0919 __exceptionPreprocess + 185 
1 libobjc.A.dylib      0x0262e5de objc_exception_throw + 47 
2 CoreFoundation      0x024e242b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
3 CoreFoundation      0x02452116 ___forwarding___ + 966 
4 CoreFoundation      0x02451cd2 _CF_forwarding_prep_0 + 50 
5 Awesome App       0x00001ff1 -[Controller refreshView] + 69 
6 Awesome App       0x00002180 -[Controller awakeFromNib] + 133 
7 UIKit        0x004a3924 -[UINib instantiateWithOwner:options:] + 1556 
8 UIKit        0x004a54b5 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168 
9 UIKit        0x002b49bb -[UIApplication _loadMainNibFile] + 172 
10 UIKit        0x002b590d -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 198 
11 UIKit        0x002bf452 -[UIApplication handleEvent:withNewEvent:] + 1958 
12 UIKit        0x002b8074 -[UIApplication sendEvent:] + 71 
13 UIKit        0x002bcac4 _UIApplicationHandleEvent + 7495 
14 GraphicsServices     0x02d46afa PurpleEventCallback + 1578 
15 CoreFoundation      0x024c1dc4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
16 CoreFoundation      0x02422737 __CFRunLoopDoSource1 + 215 
17 CoreFoundation      0x0241f9c3 __CFRunLoopRun + 979 
18 CoreFoundation      0x0241f280 CFRunLoopRunSpecific + 208 
19 CoreFoundation      0x0241f1a1 CFRunLoopRunInMode + 97 
20 UIKit        0x002b5226 -[UIApplication _run] + 625 
21 UIKit        0x002c0b58 UIApplicationMain + 1160 
22 Awesome App       0x00001e4c main + 102 
23 Awesome App       0x00001ddd start + 53 

) Mettre fin à appelé après avoir lancé une instance de programme 'NSException' signal reçu : "SIGABRT".

Mon attention a été attirée sur la ligne 2. Cela se produit lorsque j'essaie d'attribuer une valeur int à ma classe iVar. S'il vous plaît pouvez-vous me dire quel est le problème et comment y remédier?

Merci mille fois.

+0

Comment avez-vous écrit votre nom de méthode surchargé? – CiNN

+0

Pouvons-nous voir la mise en œuvre de la méthode surchargée? – Tim

+0

Oui, nous devons voir comment vous appelez la méthode qui entraîne l'erreur que vous voyez. – kubi

Répondre

6

Eh bien, oui. L'implémentation par défaut de doesNotRecognizeSelector: est censé tuer votre programme. Ce n'est pas le problème. Le problème est que vous envoyez à un objet un message auquel il ne peut pas répondre. Dans ce cas, il semble que le contrôleur ne puisse pas répondre au message refreshView.

+0

'refreshview' est en fait le dernier appel de méthode envoyé avec succès. Cette méthode (ou une méthode appelée à partir de celle-ci) a ensuite appelé quelque chose qui n'est pas implémenté .... – bbum

+0

C'était quelque chose dans la fonction refreshView. Mon point de vue perturbait les données derrière le contrôleur et les choses devenaient moche. Je l'ai réparé cependant. Merci. – iGbanam

3

Laissez l'exception être levée et laissez le programme se bloquer sur l'exception non interceptée. L'exception contient toutes les informations dont vous avez besoin. Vous devriez voir une ligne de journal qui identifie la cible de l'invocation de la méthode et quelle méthode (qui n'existe pas) essayait d'être appelée.