无法识别的选择器发送到实例(self.navigationController.toolbar)

发布于 2024-12-14 02:23:39 字数 5579 浏览 4 评论 0原文

过去两天我一直用它来撞墙——我需要帮助。

在我的控制器中,我有以下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.toolbar.barStyle = UIBarStyleBlack;
    [self.navigationController setToolbarHidden:NO];

    ... // the rest of initialisation goes here
}

该控制器显示从列表中选择的一项的详细信息。显示项目列表的控制器在此控制器上执行 pushViewControllerAnimated 来显示用户所选项目的详细信息。

这在第一次执行时工作正常,但是当用户按下后退按钮 - 然后从列表中选择另一个(甚至相同)项目时,行 [self.navigationController setToolbarHidden:NO] 会导致 SIGABRT 与此堆栈跟踪:

2011-11-04 10:24:21.423 OOKL[32026:10403] -[NSCFNumber view]: unrecognized selector sent to instance 0x69db0e0
2011-11-04 10:24:21.426 OOKL[32026:10403] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFNumber view]: unrecognized selector sent to instance 0x69db0e0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x019875a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x01adb313 objc_exception_throw + 44
    2   CoreFoundation                      0x019890bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x018f8966 ___forwarding___ + 966
    4   CoreFoundation                      0x018f8522 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x0063223e -[UIToolbar setItems:animated:] + 1554
    6   UIKit                               0x005f8ccb -[UIViewController(UINavigationControllerContextualToolbar) setToolbarItems:] + 49
    7   OOKL                                0x0003df87 -[OOExplorerObjectDetailController setUpToolbarForExplore] + 1335
    8   OOKL                                0x0003eb2b -[OOExplorerObjectDetailController viewDidLoad] + 2043
    9   UIKit                               0x005fd089 -[UIViewController view] + 179
    10  UIKit                               0x005fb482 -[UIViewController contentScrollView] + 42
    11  UIKit                               0x0060bf25 -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 48
    12  UIKit                               0x0060a555 -[UINavigationController _layoutViewController:] + 43
    13  UIKit                               0x0060b870 -[UINavigationController _startTransition:fromViewController:toViewController:] + 524
    14  UIKit                               0x0060632a -[UINavigationController _startDeferredTransitionIfNeeded] + 266
    15  UIKit                               0x0060d562 -[UINavigationController pushViewController:transition:forceImmediate:] + 932
    16  UIKit                               0x006061c4 -[UINavigationController pushViewController:animated:] + 62
    17  OOKL                                0x0002ed8b -[OOExploreController showObjectDetailControllerWithObject:] + 571
    18  OOKL                                0x0002da1c -[OOExploreController parserDidFinish:] + 316
    19  OOKL                                0x00021c13 -[OOXMLParser parserDidEndDocument:] + 99
    20  Foundation                          0x00385717 _endDocument + 95
    21  libxml2.2.dylib                     0x02ad4215 xmlParseChunk + 7380
    22  Foundation                          0x0038615a -[NSXMLParser parse] + 321
    23  OOKL                                0x00021893 -[OOXMLParser parseString:] + 339
    24  OOKL                                0x0002d8d5 -[OOExploreController parseXml:] + 165
    25  OOKL                                0x0002d81f -[OOExploreController requestDidFinishLoading:] + 79
    26  OOKL                                0x00011cba -[OOSharedSeverController connectionDidFinishLoading:] + 298
    27  Foundation                          0x002ef112 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 108
    28  Foundation                          0x002ef06b _NSURLConnectionDidFinishLoading + 133
    29  CFNetwork                           0x013cd48e _ZN19URLConnectionClient23_clientDidFinishLoadingEPNS_26ClientConnectionEventQueueE + 220
    30  CFNetwork                           0x014986e1 _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 293
    31  CFNetwork                           0x013c3c80 _ZN19URLConnectionClient13processEventsEv + 100
    32  CFNetwork                           0x013c3acf _ZN17MultiplexerSource7performEv + 251
    33  CoreFoundation                      0x019688ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    34  CoreFoundation                      0x018c688b __CFRunLoopDoSources0 + 571
    35  CoreFoundation                      0x018c5d86 __CFRunLoopRun + 470
    36  CoreFoundation                      0x018c5840 CFRunLoopRunSpecific + 208
    37  CoreFoundation                      0x018c5761 CFRunLoopRunInMode + 97
    38  GraphicsServices                    0x01e601c4 GSEventRunModal + 217
    39  GraphicsServices                    0x01e60289 GSEventRun + 115
    40  UIKit                               0x0055bc93 UIApplicationMain + 1160
    41  OOKL                                0x00002d09 main + 121
    42  OOKL                                0x00002c85 start + 53
)

我想,也许,我应该在使工具栏可见之前先设置 self.toolbarItems - 但当我这样做时,我会得到同样的错误,

self.toolbarItems = [NSArray ...]

我很绝望现在-任何帮助受到赞赏。

编辑:现在由于某种原因,我在同一位置得到 EXC_BAD_ACCESS 而不是 SIGABRT - 并且根本不生成堆栈跟踪。

I've been banging my head against the wall for the past 2 days with it - and I need help.

In my controller, I have this code:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.toolbar.barStyle = UIBarStyleBlack;
    [self.navigationController setToolbarHidden:NO];

    ... // the rest of initialisation goes here
}

This controller presents details of one item selected from the list. Controller displaying a list of items does pushViewControllerAnimated on this controller to display details of the item selected by the user.

This works fine on the first execution, however when the user presses back button - and then selects another (or even the same) item from the list, line [self.navigationController setToolbarHidden:NO] causes SIGABRT with this stack trace:

2011-11-04 10:24:21.423 OOKL[32026:10403] -[NSCFNumber view]: unrecognized selector sent to instance 0x69db0e0
2011-11-04 10:24:21.426 OOKL[32026:10403] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFNumber view]: unrecognized selector sent to instance 0x69db0e0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x019875a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x01adb313 objc_exception_throw + 44
    2   CoreFoundation                      0x019890bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x018f8966 ___forwarding___ + 966
    4   CoreFoundation                      0x018f8522 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x0063223e -[UIToolbar setItems:animated:] + 1554
    6   UIKit                               0x005f8ccb -[UIViewController(UINavigationControllerContextualToolbar) setToolbarItems:] + 49
    7   OOKL                                0x0003df87 -[OOExplorerObjectDetailController setUpToolbarForExplore] + 1335
    8   OOKL                                0x0003eb2b -[OOExplorerObjectDetailController viewDidLoad] + 2043
    9   UIKit                               0x005fd089 -[UIViewController view] + 179
    10  UIKit                               0x005fb482 -[UIViewController contentScrollView] + 42
    11  UIKit                               0x0060bf25 -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 48
    12  UIKit                               0x0060a555 -[UINavigationController _layoutViewController:] + 43
    13  UIKit                               0x0060b870 -[UINavigationController _startTransition:fromViewController:toViewController:] + 524
    14  UIKit                               0x0060632a -[UINavigationController _startDeferredTransitionIfNeeded] + 266
    15  UIKit                               0x0060d562 -[UINavigationController pushViewController:transition:forceImmediate:] + 932
    16  UIKit                               0x006061c4 -[UINavigationController pushViewController:animated:] + 62
    17  OOKL                                0x0002ed8b -[OOExploreController showObjectDetailControllerWithObject:] + 571
    18  OOKL                                0x0002da1c -[OOExploreController parserDidFinish:] + 316
    19  OOKL                                0x00021c13 -[OOXMLParser parserDidEndDocument:] + 99
    20  Foundation                          0x00385717 _endDocument + 95
    21  libxml2.2.dylib                     0x02ad4215 xmlParseChunk + 7380
    22  Foundation                          0x0038615a -[NSXMLParser parse] + 321
    23  OOKL                                0x00021893 -[OOXMLParser parseString:] + 339
    24  OOKL                                0x0002d8d5 -[OOExploreController parseXml:] + 165
    25  OOKL                                0x0002d81f -[OOExploreController requestDidFinishLoading:] + 79
    26  OOKL                                0x00011cba -[OOSharedSeverController connectionDidFinishLoading:] + 298
    27  Foundation                          0x002ef112 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 108
    28  Foundation                          0x002ef06b _NSURLConnectionDidFinishLoading + 133
    29  CFNetwork                           0x013cd48e _ZN19URLConnectionClient23_clientDidFinishLoadingEPNS_26ClientConnectionEventQueueE + 220
    30  CFNetwork                           0x014986e1 _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 293
    31  CFNetwork                           0x013c3c80 _ZN19URLConnectionClient13processEventsEv + 100
    32  CFNetwork                           0x013c3acf _ZN17MultiplexerSource7performEv + 251
    33  CoreFoundation                      0x019688ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    34  CoreFoundation                      0x018c688b __CFRunLoopDoSources0 + 571
    35  CoreFoundation                      0x018c5d86 __CFRunLoopRun + 470
    36  CoreFoundation                      0x018c5840 CFRunLoopRunSpecific + 208
    37  CoreFoundation                      0x018c5761 CFRunLoopRunInMode + 97
    38  GraphicsServices                    0x01e601c4 GSEventRunModal + 217
    39  GraphicsServices                    0x01e60289 GSEventRun + 115
    40  UIKit                               0x0055bc93 UIApplicationMain + 1160
    41  OOKL                                0x00002d09 main + 121
    42  OOKL                                0x00002c85 start + 53
)

I thought, maybe, I should setup self.toolbarItems first before making the toolbar visible - but then I get this same error when I do

self.toolbarItems = [NSArray ...]

I'm desperate now - any help is appreciated.

Edit: Now for some reason I'm getting EXC_BAD_ACCESS instead of SIGABRT - in the same place - and no stack trace is produced at all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

∞梦里开花 2024-12-21 02:23:39

正如堆栈跟踪所示:

-[NSCFNumber view]:无法识别的选择器发送到实例 0x69db0e0

您不小心过度释放了导致此消息发送到某个悬空指针(引用某些垃圾)的内容。

检查您是否正在释放您的 navigationController、ViewController 或工作流程开始处的任何内容。

As the stack trace tells:

-[NSCFNumber view]: unrecognized selector sent to instance 0x69db0e0

You are accidentally overreleasing something that is leading to this message sent to some dangling pointer (reference to some junk).

Check if you are releasing your navigationController, ViewController or anything where your workflow begins.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文