2010-11-22 9 views
3

Ich habe drei Ansichten, die von der UITableViewController-Klasse erben. Der erste zeigt eine Liste der Orte, der zweite zeigt eine Karte mit einer Anmerkung, die den Ort der in der ersten Ansicht ausgewählten Zeile darstellt, der letzte zeigt Informationen über den Ort (Adresse, Bild, ...). Manchmal, wenn ich den Zurück-Knopf in die zweite Ansicht drücke, erhalte ich diese Fehlermeldung.'NSInvalidArgumentException', Grund: '- [__ NSArrayI leftCapWidth]

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI leftCapWidth]: unrecognized selector sent to instance 0x6b57110' 
*** Call stack at first throw: 
(
0 CoreFoundation      0x02576919 __exceptionPreprocess + 185 
1 libobjc.A.dylib      0x026c45de objc_exception_throw + 47 
2 CoreFoundation      0x0257842b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
3 CoreFoundation      0x024e8116 ___forwarding___ + 966 
4 CoreFoundation      0x024e7cd2 _CF_forwarding_prep_0 + 50 
5 UIKit        0x003935b9 -[UIImageView(UIImageViewInternal) _shouldDrawImage:] + 35 
6 UIKit        0x00392f3a -[UIImageView(UIImageViewInternal) _canDrawContent] + 411 
7 UIKit        0x00308f20 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 955 
8 UIKit        0x00308cfc -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407 
9 UIKit        0x00308cfc -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407 
10 UIKit        0x00308cfc -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407 
11 UIKit        0x0031119a -[UIScrollView _didMoveFromWindow:toWindow:] + 71 
12 UIKit        0x00308cfc -[UIView(Internal) _didMoveFromWindow:toWindow:] + 407 
13 UIKit        0x00307b10 -[UIView(Hierarchy) _postMovedFromSuperview:] + 166 
14 UIKit        0x00300a34 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1080 
15 UIKit        0x002fed87 -[UIView(Hierarchy) addSubview:] + 57 
16 UIKit        0x0050a829 -[UINavigationTransitionView transition:fromView:toView:] + 551 
17 UIKit        0x0050a28d -[UINavigationTransitionView transition:toView:] + 56 
18 UIKit        0x00381329 -[UINavigationController _startDeferredTransitionIfNeeded] + 266 
19 UIKit        0x00380fc7 -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:] + 386 
20 UIKit        0x00381141 -[UINavigationController popViewControllerAnimated:] + 57 
21 UIKit        0x003805b6 -[UINavigationController navigationBar:shouldPopItem:] + 148 
22 UIKit        0x00327143 -[UINavigationBar _popNavigationItemWithTransition:] + 116 
23 UIKit        0x0032def3 -[UINavigationBar _handleMouseUpAtPoint:] + 605 
24 UIKit        0x002f42ff -[UIWindow _sendTouchesForEvent:] + 567 
25 UIKit        0x002d61ec -[UIApplication sendEvent:] + 447 
26 UIKit        0x002daac4 _UIApplicationHandleEvent + 7495 
27 GraphicsServices     0x02ddcafa PurpleEventCallback + 1578 
28 CoreFoundation      0x02557dc4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
29 CoreFoundation      0x024b8737 __CFRunLoopDoSource1 + 215 
30 CoreFoundation      0x024b59c3 __CFRunLoopRun + 979 
31 CoreFoundation      0x024b5280 CFRunLoopRunSpecific + 208 
32 CoreFoundation      0x024b51a1 CFRunLoopRunInMode + 97 
33 GraphicsServices     0x02ddb2c8 GSEventRunModal + 217 
34 GraphicsServices     0x02ddb38d GSEventRun + 115 
35 UIKit        0x002deb58 UIApplicationMain + 1160 
36 TravelGuideTemplate     0x00002730 main + 102 
37 TravelGuideTemplate     0x000026c1 start + 53 
) 
terminate called after throwing an instance of 'NSException' 

Ich weiß nicht, warum ich diese Nachricht bekomme. Könnte mir jemand helfen?

Danke fürs Lesen.

Antwort

4

Ich wette 1 $ das ist ein Speicherverwaltungsproblem. Ich denke, Ihre App versucht, auf ein Objekt zuzugreifen, das früher veröffentlicht wurde.

NSZombie aktivieren und sehen, ob dies die Fehlermeldung ändert:

  1. Doppelklick auf die ausführbare Datei in der ausführbaren Gruppe
  2. die zweite Registerkarte öffnen, arguments
  3. unter Variables to be set in the environment eine Variable NSZombieEnabled Namen hinzufügen, mit ein Wert von YES, und aktivieren Sie es, indem Sie das Kontrollkästchen davor aktivieren.
  4. Führen Sie Ihr Programm erneut
  5. ??
  6. Gewinn
+0

Jetzt bekomme ich diese Fehlermeldung. - [UIImage isKindOfClass:]: Nachricht, die an die freigegebene Instanz 0x6b751a0 gesendet wird. Ist die gleiche Fehlermeldung? –

+0

Also (automatisch) release ein UIImage irgendwo, wo es nicht veröffentlicht werden sollte. Ich würde alle diese Methoden viewWillDisappear, viewDidDisappear für diese Version überprüfen. Haben Sie den Analysator versucht, dieses Problem aufzuspüren? Verwende 'Clean all targets' im Build-Menü und führe 'Build and analyze' aus dem selben Menü aus. Und vergiss nicht, das Häkchen vor NSZombieEnabled zu entfernen, wenn du diesen Fehler gefunden hast. –

+0

Vielen Dank. Ich denke, dass es jetzt gut funktioniert. Ich kannte den Analysator nicht. Ich war Autoreleasing ein Bild, das wiederum in eine UIImageView eingefügt wurde, die auch Autoreleased war (Zu viele Autoreleased Objekte, wusste ich nicht, dass dies ein Fehler sein könnte). All das passiert, um zu schnell zu lernen. Ich schulde dir einen Dollar. –

Verwandte Themen