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 编译的应用程序的用户界面