我有三个继承自 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'

我不知道为什么会收到此消息。有人可以帮助我吗?

谢谢阅读。

有帮助吗?

解决方案

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

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

  1. 双击可执行文件组中的可执行文件
  2. 打开第二个选项卡, arguments
  3. 在下面 Variables to be set in the environment 添加一个名为 NSZombieEnabled, ,值为 YES, ,并通过勾选其前面的复选框来启用它。
  4. 再次运行你的程序
  5. ??
  6. 利润
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top