我遇到了一个奇怪的 bug:
致命异常:NSInvalidArgumentException *** -[_NSXPCDistantObject methodSignatureForSelector:]:连接到名为 com.apple.nsurlsessiond 的服务上未设置协议
这个问题似乎只在 iOS 9 上出现。根据堆栈跟踪,这个 bug 是由对 -[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
进行后台传输会话,但我无法复现这个问题,所以我不确定它是否与此有关。
有人遇到过这个问题吗?有什么方法可以解决它吗?