2011-11-04 103 views
0

過去兩天裏我一直在用頭撞牆 - 而且我需要幫助。發送到實例的無法識別的選擇器(self.navigationController.toolbar)

在我的控制,我有這樣的代碼:

- (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 - 在同一個地方 - 而沒有堆棧跟蹤產生的。

+1

您是否注意到您的代碼嘗試調用NSCFNumber實例上的方法視圖? –

+0

由於視圖遍歷,這不會崩潰。我認爲你需要檢查進口/出口代理的可行性。它可能會錯誤地釋放。 –

+0

您的編輯建議您嘗試訪問已經發布並且不存在的對象。嘗試修復斷點。 – sElanthiraiyan

回答

0

由於堆棧跟蹤告訴:

- [NSCFNumber視圖]:無法識別的選擇發送到實例0x69db0e0

您意外overreleasing的東西,是導致此消息發送到某些懸擺指針(參考一些垃圾)。

檢查您是否正在發佈您的navigationController,ViewController或任何工作流程開始的地方。

+0

我會接受這個答案,因爲它幾乎是什麼問題 - 「過度放鬆某些東西」。出於某種原因,我在將它添加到數組之前創建了[button autorelease]。然後我還在dealloc中有[按鈕釋放]。我想,這兩件事情一起造成了問題。 –

相關問題