1

iOS と Apple Watch 用のアプリケーションを作成しており、Apple Watch と iPhone の間でデータを同期する必要があります。

私はiPhoneからApple Watchにデータを送信するためにこれを行いました: http://telliott.io/2015/08/11/how-to-communicate-between-ios-and-watchos2.html

逆に、時計アプリでデータを変更し、更新されたデータを iPhone に送信すると、メッセージが受信された ViewController が開かれている場合に奇妙な警告が表示されます。閉じて時計から更新されたデータを送信すると、コンソールに警告は表示されず、ViewController を開くとデータが更新されます。

2015-11-16 11:28:19.057 GeoSocialRecommender[286:11448] This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes.  This will cause an exception in a future release.
 Stack:(
0   CoreFoundation                      0x0000000182410f60 <redacted> + 148
1   libobjc.A.dylib                     0x0000000196fc3f80 objc_exception_throw + 56
2   CoreFoundation                      0x0000000182410e90 <redacted> + 0
3   Foundation                          0x000000018342f2d8 <redacted> + 88
4   Foundation                          0x00000001832b5a1c <redacted> + 56
5   Foundation                          0x00000001832b15dc <redacted> + 260
6   UIKit                               0x0000000187aab8c4 <redacted> + 64
7   UIKit                               0x0000000187aac3dc <redacted> + 244
8   UIKit                               0x000000018820b1e4 <redacted> + 268
9   UIKit                               0x0000000187cb0f10 <redacted> + 176
10  UIKit                               0x000000018799f7ac <redacted> + 644
11  QuartzCore                          0x000000018719eb58 <redacted> + 148
12  QuartzCore                          0x0000000187199764 <redacted> + 292
13  QuartzCore                          0x0000000187199624 <redacted> + 32
14  QuartzCore                          0x0000000187198cc0 <redacted> + 252
15  QuartzCore                          0x0000000187198a08 <redacted> + 512
16  QuartzCore                          0x00000001871c7b0c <redacted> + 236
17  libsystem_pthread.dylib             0x00000001979f61e0 <redacted> + 584
18  libsystem_pthread.dylib             0x00000001979f5d58 <redacted> + 136
19  libsystem_pthread.dylib             0x00000001979f553c pthread_mutex_lock + 0
20  libsystem_pthread.dylib             0x00000001979f5020 start_wqthread + 4
)

誰でもこの奇妙な警告で私を助けることができますか?

これは私がメッセージを受け取る方法です

func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]){
    if(WCSession.isSupported()){
        self.prefs = Utils().importDataFromSession(prefs, applicationContext: applicationContext)
        initializeGUI(true)

    }
}
4

1 に答える 1

1

WCSession ヘッダーには次のように記載されています。

/** ----------------------------- WCSessionDelegate -----------------------------
 *  The session calls the delegate methods when content is received and session
 *  state changes. All delegate methods will be called on the same queue. The
 *  delegate queue is a non-main serial queue. It is the client's responsibility
 *  to dispatch to another queue if neccessary.
 */

したがって、UI を更新する場合は、コードがアプリケーションのメイン スレッドで実行されるようにする必要があります。したがって、コードに次の変更を加えると、警告が消えます。

func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]){
    if (WCSession.isSupported()) {
        self.prefs = Utils().importDataFromSession(prefs, applicationContext: applicationContext)
        dispatch_async(dispatch_get_main_queue(), {
            initializeGUI(true)
       })
    }
}
于 2015-11-17T11:35:06.493 に答える