iOS 模拟器在应用程序执行时是黑色的

Posted

技术标签:

【中文标题】iOS 模拟器在应用程序执行时是黑色的【英文标题】:iOS Simulator is black on app execution 【发布时间】:2014-08-23 16:00:29 【问题描述】:

我正在运行 xcode 5.1.1 并且一直在尝试学习客观的 C / ios 开发。现在,每当我尝试在模拟器上运行我的代码(我没有实际的设备 atm)时,它都会出现黑屏。代码可以找到here。编译和运行给我以下错误:

2014-08-23 10:42:57.429 Calculator[1862:60b] *** Terminating app due to uncaught exception         'NSUnknownKeyException', reason: '[<XYZViewController 0xe436640> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key didgetPressed.'
*** First throw call stack:
(
0   CoreFoundation                      0x017ed1e4 __exceptionPreprocess + 180
1   libobjc.A.dylib                     0x0156c8e5 objc_exception_throw + 44
2   CoreFoundation                      0x0187cfe1 -[NSException raise] + 17
3   Foundation                          0x0122cd9e -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 282
4   Foundation                          0x011991d7 _NSSetUsingKeyValueSetter + 88
5   Foundation                          0x01198731 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 267
6   Foundation                          0x011fab0a -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 412
7   UIKit                               0x004e31f4 -[UIRuntimeOutletConnection connect] + 106
8   libobjc.A.dylib                     0x0157e7de -[NSObject performSelector:] + 62
9   CoreFoundation                      0x017e876a -[NSArray makeObjectsPerformSelector:] + 314
10  UIKit                               0x004e1d4d -[UINib instantiateWithOwner:options:] + 1417
11  UIKit                               0x0034a6f5 -[UIViewController _loadViewFromNibNamed:bundle:] + 280
12  UIKit                               0x0034ae9d -[UIViewController loadView] + 302
13  UIKit                               0x0034b0d3 -[UIViewController loadViewIfRequired] + 78
14  UIKit                               0x0034b5d9 -[UIViewController view] + 35
15  UIKit                               0x0026b267 -[UIWindow addRootViewControllerViewIfPossible] + 66
16  UIKit                               0x0026b5ef -[UIWindow _setHidden:forced:] + 312
17  UIKit                               0x0026b86b -[UIWindow _orderFrontWithoutMakingKey] + 49
18  UIKit                               0x002763c8 -[UIWindow makeKeyAndVisible] + 65
19  UIKit                               0x00226bc0 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 2097
20  UIKit                               0x0022b667 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824
21  UIKit                               0x0023ff92 -[UIApplication handleEvent:withNewEvent:] + 3517
22  UIKit                               0x00240555 -[UIApplication sendEvent:] + 85
23  UIKit                               0x0022d250 _UIApplicationHandleEvent + 683
24  GraphicsServices                    0x037e2f02 _PurpleEventCallback + 776
25  GraphicsServices                    0x037e2a0d PurpleEventCallback + 46
26  CoreFoundation                      0x01768ca5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
27  CoreFoundation                      0x017689db __CFRunLoopDoSource1 + 523
28  CoreFoundation                      0x0179368c __CFRunLoopRun + 2156
29  CoreFoundation                      0x017929d3 CFRunLoopRunSpecific + 467
30  CoreFoundation                      0x017927eb CFRunLoopRunInMode + 123
31  UIKit                               0x0022ad9c -[UIApplication _run] + 840
32  UIKit                               0x0022cf9b UIApplicationMain + 1225
33  Calculator                          0x00002c8d main + 141
34  libdyld.dylib                       0x01e34701 start + 1
35  ???                                 0x00000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

我尝试了以下事情,但到目前为止没有任何效果

1) 检查部署信息,它的主界面设置为 main

2) 仔细检查所有断点以将其关闭并通过 Debug->Disable Breakpoints 禁用所有断点

3) 在 iOS 模拟器上重置内容和设置。

4) 使用 LLDB 调试器检查了该问题,但据我所知,5.1.1 xcode 不再存在该问题。

5) 检查本地主机是否仍设置为 127.0.0.1

谢谢! - 特里恩

【问题讨论】:

What does this mean? "'NSUnknownKeyException', reason: ... This class is not key value coding-compliant for the key X"的可能重复 【参考方案1】:

我检查了您的项目。数字 (didgetPressed:) 的 IBActions 连接正确,但 IBOutlets 连接不正确(didgetPressed 属性不存在)。

当您删除情节提要中的引用出口时,它将起作用(见图)。

【讨论】:

【参考方案2】:

此错误消息告诉我们出了什么问题:

2014-08-23 10:42:57.429 Calculator[1862:60b] * 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:这个类是键 didgetPressed 的键值编码不兼容。'

由此我们可以推断,在您的故事板(或 xib)中,您有一个 XYZViewController 类的对象。该对象曾经有一个名为 didgetPressed 的插座,而您将该插座连接到情节提要中的其他内容。

后来,您更改了项目的某些内容,从该对象中删除了 didgetPressed 插座,但您没有断开情节提要中的插座。例如,也许您将 Objective-C 代码中的出口名称更改为 didGetPressed,或者您删除了出口并将其更改为一个动作,或者您更改了对象的类(并且之前的类具有 didgetPressed出口)。

您需要在情节提要中找到XYZViewController 对象并断开didgetPressed 插座。

【讨论】:

【参考方案3】:

错误是不言自明的,您可以通过打开故事板选择 XYZViewController 转到 Utilities 面板下的连接检查器并删除 didgetPressed 的绑定来删除它。

我已经检查过你的代码,只需选择带有 7 作为标题的按钮,然后删除它的引用插座并再次运行它就可以工作了。

【讨论】:

以上是关于iOS 模拟器在应用程序执行时是黑色的的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在设备或模拟器上运行我的应用程序时屏幕是黑色的

即使设置为亮,状态栏也保持黑色

装了阿里旺旺登陆时是黑色的还有英文?

ios 7 模拟器不会回退针对 ios 6.1 sdk 编译的应用程序的用户界面

iPhone模拟器中的白色空白屏幕和加载到iPhone时的黑色空白屏幕

iOS:自动布局的问题。模拟器结果更改为故事板更改