'NSInvalidArgumentException',原因:' - [__ NSArrayI leftCapWidth]

时间:2010-11-22 11:46:28

标签: objective-c ios nsexception

我有三个从UITableViewController类继承的视图。第一个显示位置列表,第二个显示带有注释的地图,该注释表示在第一个视图中选择的行的位置,最后一个显示有关位置的信息(地址,图像,...)。有时当我将后退按钮推入第二个视图时,我收到此错误消息。

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'

我不知道为什么我收到这条消息。有人能帮助我吗?

感谢阅读。

1 个答案:

答案 0 :(得分:4)

我打赌1 $这是一个内存管理问题。我认为您的应用尝试访问之前发布的对象。

启用NSZombie并查看是否更改了错误消息:

  1. 双击可执行文件组中的可执行文件
  2. 打开第二个标签arguments
  3. Variables to be set in the environment下添加名为NSZombieEnabled的变量,其值为YES,并通过勾选前面的复选框启用它。
  4. 再次运行您的程序
  5. ...
  6. 利润