2017-01-03 6 views
1

ファブリックは私が次のスタックを参照してください展開すると、ユーザーの多くは、私のアプリクラッシュNSProxy doesNotRecognizeSelector:

crash http://i65.tinypic.com/30uqnvn.png

に次のクラッシュを持っていることを私に示して

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で動作しないものがあるということです。私のアプリにはキットアプリを見るためにデータを転送する準備ができているクラスがありますが、この段階ではビルド段階でアプリを見たり、キットの拡張を見たりするリファレンスはありません。私のクラスで

コードが

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) 
    { } 
} 

任意の提案ですか?

答えて

0

NSProxyサブクラスがWCSessionの代理人として使用されているようです。それは事実ですか?もしそうなら、サブクラスNSObjectに変更してみてください。

+0

こんにちは、私はあなたのリプレイに感謝します。あなたが私のコードで見ることができるように、NSObjectのサブクラスであるクラスWatchManagerがあり、そこにはすべてのデリゲートメソッドを挿入した拡張があります。私は自分のプロジェクトにNSProxyサブクラスがありません。 – Charlotte

+0

WCSessionオブジェクトと相互作用する可能性のある他のフレームワークを使用していますか(一般的なものは、広告とユーザー追跡のものです)。 – ccjensen

関連する問題