的iOS 9:崩溃上 - [_ NSXPCDistantObject:]方法
我得到一个奇怪的错误:的iOS 9:崩溃上 - [_ NSXPCDistantObject:]方法
致命异常:NSInvalidArgumentException *** - [_ NSXPCDistantObject:]方法:无协议已设置的连接连接 到服务名为com.apple.nsurlsessiond”
,才出现此问题是发生在iOS 9.根据堆栈跟踪,错误是由以-[UIApplication _sendWillEnterForegroundCallbacks]
呼叫触发。
Thread : Fatal Exception: NSInvalidArgumentException
0 CoreFoundation 6485512008 __exceptionPreprocess
1 libobjc.A.dylib 6833323904 objc_exception_throw
2 CoreFoundation 6485511824 -[NSException initWithCoder:]
3 Foundation 6500536092 -[_NSXPCDistantObject methodSignatureForSelector:]
4 CoreFoundation 6485526892 ___forwarding___
5 CoreFoundation 6484495532 _CF_forwarding_prep_0
6 CoreFoundation 6485141004 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
7 CoreFoundation 6485138988 _CFXRegistrationPost
8 CoreFoundation 6485138348 ___CFXNotificationPost_block_invoke
9 CoreFoundation 6485554212 -[_CFXNotificationRegistrar find:object:observer:enumerator:]
10 CoreFoundation 6484354836 _CFXNotificationPost
11 Foundation 6500543948 -[NSNotificationCenter postNotificationName:object:userInfo:]
12 UIKit 6577878356 -[UIApplication _sendWillEnterForegroundCallbacks]
continues ...
所以看来,当应用程序将进入前景,一些观察员注册尝试通过RPC重新连接nsurlsessiond
并失败?我使用NSURLSession
做了一个后台传输会话,但我无法重现这一点,所以我不确定它是否相关。
有没有人看过这个问题?我能做些什么来解决它?
貌似这里描述iOS中的一个错误:https://forums.developer.apple.com/thread/45651#140745
AFAICT这种崩溃是由NSURLSession的背景会话支持所致。这使用NSXPCConnection将工作传递给它的守护进程(nsurlsessiond)(不是iOS SDK的一部分,而是OS X上的公共API,因此您可以在此处阅读它)。 NSXPCConnection具有中断连接的概念,即客户端和服务器之间的IPC连接已断开但可以重新建立。 NSURLSession的后台会话支持,就像所有NSXPCConnection客户端一样,必须处理这些中断。 唉,这样做有一个错误。这个错误是一种竞争状态,表现为这次崩溃。我们希望在未来的操作系统发布中解决这个问题,但我无法分享任何具体细节。
如果链接无效,您应该真正使用链接的内容编辑您的答案。就目前而言,这是一个仅链接的答案 – JAL
看来之前订阅了UIApplicationWillEnterForeground
通知的内容在未取消订阅的情况下被释放,或者预期的接口不存在。
我会检查您的应用已订阅该通知的任何位置,并确保它正确取消订阅,并且所引用的方法已实施。
如果在methodSignatureForSelector
上失败,则表明NSNotificationCenter
想要与通知调用的方法未实现。可能是一个缺少的方法,或一个错字。
感谢您的回答。问题是我没有使用'UIApplicationWillEnterForeground',而是由于提到'nsurlsessiond'的异常文本,它似乎是Apple在内部使用的东西。 – bcattle
iOS 9上有很多关于通知中心和NSInvalidArgumentException的崩溃报告。它看起来像是当应用程序停止时,崩溃发生,操作系统破坏应用程序,同时仍在处理一些数据。不知道这是否是你面对的同样的错误。 –