0

多目的アプリで Socket ScanAPI を使用すると問題が発生するようです。私は GitHub でシングル エントリの迅速なサンプル コードを使用しています。ソケット スキャナーとコードは、最初にスキャンに使用する VC を提示すると問題なく動作します。

初期化は、共有バージョンではなく ScanApiHelper() で scanApiHelper を初期化する点を除いて、サンプル コードと似ています。

    var scanApiHelper = ScanApiHelper() 
scanApiHelperConsumer=NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: Selector("onScanApiHelperConsumer"), userInfo: nil, repeats: true)
        scanApiHelper.pushDelegate(self)
        scanApiHelper.open()

問題は、VC を閉じてから再度提示すると、0x1005705c8 で sktscanapilistenerthread でクラッシュします。

0x1005705b4 <+1332>: bl     0x10058ab88               ; CSktScanAPI::NotifyError at CSktScanAPI.cpp:4639
    0x1005705b8 <+1336>: adrp   x8, 515
    0x1005705bc <+1340>: ldr    x1, [x8, #3296]
    0x1005705c0 <+1344>: ldr    x0, [sp, #8]
    0x1005705c4 <+1348>: bl     0x10062b338               ; symbol stub for: objc_msgSend
    0x1005705c8 <+1352>: add    x0, sp, #48               ; =48 
    0x1005705cc <+1356>: bl     0x100563308               ; CSktList::~CSktList at SktList.cpp:29
    0x1005705d0 <+1360>: add    x0, sp, #312              ; =312 
    0x1005705d4 <+1364>: bl     0x10057fa68               ; SktAccessoryEnumerator::~SktAccessoryEnumerator at SktAccessoryEnumerator.mm:45

SDK はヘルパー オブジェクトの初期化時にバックグラウンド スレッドを起動しますか? そのため、これを再初期化するとクラッシュが発生しますか? つまり、ヘルパー オブジェクトの初期化はルート VC で行う必要がありますか?

4

2 に答える 2