无法识别的选择器发送到实例 NSArrayM [关闭]

Posted

技术标签:

【中文标题】无法识别的选择器发送到实例 NSArrayM [关闭]【英文标题】:Unrecognized selector sent to instance NSArrayM [closed] 【发布时间】:2014-03-26 17:06:05 【问题描述】:

我是 ios 编程新手。今天我尝试实现 UITabBarController,但决定将其删除。从那以后我的应用程序崩溃了。我确定我已经删除了应用程序委托的正确部分,因为我使用了 ctrl + z。我似乎真的无法找出应用程序崩溃的位置以及原因?

源码:

http://www.codeviewer.org/view/code:3cc0

调试:

2014-02-24 21:00:26.628 app[1307:70b] -[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0xca716d0
2014-02-24 21:00:26.631 app[1307:70b] *** Terminating app due to uncaught exception    'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0xca716d0'
*** First throw call stack:
(
0   CoreFoundation                      0x02b235e4 __exceptionPreprocess + 180
1   libobjc.A.dylib                     0x028a68b6 objc_exception_throw + 44
2   CoreFoundation                      0x02bc0903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
3   CoreFoundation                      0x02b1390b ___forwarding___ + 1019
4   CoreFoundation                      0x02b134ee _CF_forwarding_prep_0 + 14
5   app                                 0x000627e9 -[MenuViewController viewDidLoad] + 16057
6   UIKit                               0x01728318 -[UIViewController loadViewIfRequired] + 696
7   UIKit                               0x017285b4 -[UIViewController view] + 35
8   UIKit                               0x01752ca9 -[UINavigationController rotatingSnapshotViewForWindow:] + 52
9   UIKit                               0x01a7ca60 -[UIClientRotationContext initWithClient:toOrientation:duration:andWindow:] + 420
10  UIKit                               0x016582f2 -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:isRotating:] + 1495
11  UIKit                               0x01657d16 -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 82
12  UIKit                               0x01657be8 -[UIWindow _setRotatableViewOrientation:updateStatusBar:duration:force:] + 117
13  UIKit                               0x01657c70 -[UIWindow _setRotatableViewOrientation:duration:force:] + 67
14  UIKit                               0x01656d0a __57-[UIWindow _updateToInterfaceOrientation:duration:force:]_block_invoke + 120
15  UIKit                               0x01656c6c -[UIWindow _updateToInterfaceOrientation:duration:force:] + 400
16  UIKit                               0x016579c3 -[UIWindow setAutorotates:forceUpdateInterfaceOrientation:] + 870
17  UIKit                               0x0165afb6 -[UIWindow setDelegate:] + 449
18  UIKit                               0x0172c737 -[UIViewController _tryBecomeRootViewControllerInWindow:] + 180
19  UIKit                               0x01650c1c -[UIWindow addRootViewControllerViewIfPossible] + 609
20  UIKit                               0x01650d97 -[UIWindow _setHidden:forced:] + 312
21  UIKit                               0x0165102d -[UIWindow _orderFrontWithoutMakingKey] + 49
22  UIKit                               0x0165b89a -[UIWindow makeKeyAndVisible] + 65
23  app                                 0x00012ecf -[AppDelegate application:didFinishLaunchingWithOptions:] + 1391
24  UIKit                               0x0160e355 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309
25  UIKit                               0x0160eb95 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1536
26  UIKit                               0x016133a8 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824
27  UIKit                               0x0162787c -[UIApplication handleEvent:withNewEvent:] + 3447
28  UIKit                               0x01627de9 -[UIApplication sendEvent:] + 85
29  UIKit                               0x01615025 _UIApplicationHandleEvent + 736
30  GraphicsServices                    0x0448c2f6 _PurpleEventCallback + 776
31  GraphicsServices                    0x0448be01 PurpleEventCallback + 46
32  CoreFoundation                      0x02a9ed65 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
33  CoreFoundation                      0x02a9ea9b __CFRunLoopDoSource1 + 523
34  CoreFoundation                      0x02ac977c __CFRunLoopRun + 2156
35  CoreFoundation                      0x02ac8ac3 CFRunLoopRunSpecific + 467
36  CoreFoundation                      0x02ac88db CFRunLoopRunInMode + 123
37  UIKit                               0x01612add -[UIApplication _run] + 840
38  UIKit                               0x01614d3b UIApplicationMain + 1225
39  app                                 0x0008f4fd main + 141
40  libdyld.dylib                       0x030c370d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

【问题讨论】:

请显示您的 MenuViewController 的viewDidLoad 对未来的建议:这种崩溃报告对于试图帮助您调试代码的人来说通常是完全没用的。它足以给出错误的类型和发生崩溃的相关代码。 (在这种情况下可能在MenuViewController 基于崩溃报告,正如马特已经说过的) codeviewer.org/view/code:3cc0 源代码。 您的代码应该是您问题的一部分,而不是链接到。如果该链接停止工作,那么我们将丢失问题的相关部分。 谷歌这条消息——你会找到成千上万的答案——这里有数百个。研究信息并理解它在说什么。研究异常回溯并了解它通常直接指向失败的操作。调试代码,插入 NSLogs 并设置断点,这样您就可以观察正在发生的事情。做你的功课!。 【参考方案1】:

您是否也从 Interface Builder 中的 .xib 文件中删除了 UITabBarController? 您是否也从 Interface Builder 中的 .xib 文件中删除了 UITabBarController? 检查对象 - 在你的情况下 NSDictionary 是它的类并且键不为空。例如:

- (void)fetchedDataAlerta:(NSData *)responseData 
    NSError* error;
    NSLog(@"RESP register %@", responseData);
    if(responseData )  //here you have recieved valid info. Without it, next line  will crash
        NSDictionary* json = [NSJSONSerialization options:kNilOptions error:&error];

你的情况

NSData* rawBody2 = [response2 rawBody];
//here check if NSData is not null, nil and is valid add line
if (rawBody2) 
    results2 = [NSJSONSerialization JSONObjectWithData:rawBody2 options:NSJSONReadingMutableContainers error:nil];

【讨论】:

我没有 xib 或故事板。全部以编程方式添加。

以上是关于无法识别的选择器发送到实例 NSArrayM [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

[__NSArrayM intValue]:发送到实例的无法识别的选择器

目标c [__NSArrayM objectForKey:]:发送到实例的无法识别的选择器

-[__NSArrayM 长度]:无法识别的选择器发送到实例 0x145ecca0

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[__NSArrayM itemName]:无法识别的选择器发送到实例

领域:获取 -[__NSArrayM UTF8String]:无法识别的选择器发送到实例

Xcode -[__NSArrayM isEqualToString:]:无法识别的选择器发送到实例 0x7a1248d0 - 如何修复?