无法识别的选择器发送到实例 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 - 如何修复?