Ios 崩溃NSProxy无法识别选择器:

Ios 崩溃NSProxy无法识别选择器:,ios,iphone,swift,Ios,Iphone,Swift,Fabric向我显示,很多用户在我的应用程序中出现以下崩溃 如果展开,将看到以下堆栈 Fatal Exception: NSInvalidArgumentException 0 CoreFoundation 0x18ef201c0 __exceptionPreprocess 1 libobjc.A.dylib 0x18d95855c objc_exception_throw 2 CoreFoundation

Fabric向我显示,很多用户在我的应用程序中出现以下崩溃

如果展开,将看到以下堆栈

 Fatal Exception: NSInvalidArgumentException
 0  CoreFoundation                 0x18ef201c0 __exceptionPreprocess
 1  libobjc.A.dylib                0x18d95855c objc_exception_throw
 2  CoreFoundation                 0x18ef20108 -[NSException initWithCoder:]
 3  Foundation                     0x18f9eb714 -[NSProxy doesNotRecognizeSelector:]
 4  CoreFoundation                 0x18ef24278 ___forwarding___
 5  CoreFoundation                 0x18ee1e59c _CF_forwarding_prep_0
 6  WatchConnectivity              0x1a39caff0 __57-[WCSession onqueue_completeSwitchTask:withSessionState:]_block_invoke
 7  Foundation                     0x18f9e17e4 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__
 8  Foundation                     0x18f926358 -[NSBlockOperation main]
 9  Foundation                     0x18f916954 -[__NSOperationInternal _start:]
 10 Foundation                     0x18f9e3b90 __NSOQSchedule_f
 11 libdispatch.dylib              0x18dda91c0 _dispatch_client_callout
 12 libdispatch.dylib              0x18ddb7444 _dispatch_queue_serial_drain
 13 libdispatch.dylib              0x18ddac9a8 _dispatch_queue_invoke
 14 libdispatch.dylib              0x18ddb938c _dispatch_root_queue_drain
 15 libdispatch.dylib              0x18ddb90ec _dispatch_worker_thread3
 16 libsystem_pthread.dylib        0x18dfb12c8 _pthread_wqthread
 17 libsystem_pthread.dylib        0x18dfb0db4 start_wqthread
我的假设有一些东西不适用于WatchKit。在我的应用程序中,有一个类已准备好将数据传输到watch kit应用程序,但在构建阶段的这一刻,并没有对watch app和watch kit extension的引用

我班上的代码是

import Foundation
import WatchConnectivity

class WatchManager: NSObject
{
    func setLanguage(localization: String)
    {
        if #available(iOS 9.0, *) {
            if WCSession.isSupported() {
                let watchSession = WCSession.defaultSession()
                watchSession.delegate = self
                watchSession.activateSession()
                if watchSession.paired && watchSession.watchAppInstalled {
                    watchSession.transferUserInfo(["localization": localization])
                }
            }
        }
    }
}

extension WatchManager: WCSessionDelegate
{
    @available(iOS 9.3, *)
    func session(session: WCSession, activationDidCompleteWithState activationState: WCSessionActivationState, error: NSError?)
    { }

    @available(iOS 9.0, *)
    func sessionDidBecomeInactive(session: WCSession)
    { }

    @available(iOS 9.0, *)
    func sessionDidDeactivate(session: WCSession)
    { }
}

有什么建议吗

您的应用程序似乎正在使用
NSProxy
子类作为
WCSession
的委托。是这样吗?如果是,请尝试将其更改为
NSObject
子类

您的应用程序似乎正在使用
NSProxy
子类作为
WCSession
的委托。是这样吗?如果是,请尝试将其更改为
NSObject
子类

嗨,詹森,谢谢你的重播。正如您在我的代码中所看到的,我有一个类WatchManager,它是NSObject的一个子类,还有一个扩展,我在其中插入了委托的所有方法。我的项目中没有Nproxy子类。您是否正在使用任何其他可以与WCSession对象交互的框架(常见的是广告和用户跟踪框架)?嗨,ccjensen,感谢您的重播。正如您在我的代码中所看到的,我有一个类WatchManager,它是NSObject的一个子类,还有一个扩展,我在其中插入了委托的所有方法。我的项目中没有Nproxy子类。您是否使用了其他可能与WCSession对象交互的框架(常见的是广告和用户跟踪框架)?