問題タブ [ios-multithreading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - アトミック プロパティ ラッパーは、構造体ではなくクラスとして宣言されている場合にのみ機能します
Swift には ObjC のatomic
プロパティ属性がないため、Swift クラス用に Swift で「ロック」とそのロックを使用するアトミック プロパティ ラッパーを作成しました。
スレッド サニタイザーを有効にしてテストを実行すると、Atomic プロパティ ラッパーを使用するプロパティでデータ競合が常にキャプチャされます。
機能した唯一のことは、プロパティ ラッパーの宣言を構造体ではなくクラスに変更することでした。ここでの主な問題は、なぜ機能するのかということです。
プロパティ ラッパーに sを追加し、作成されたオブジェクトの数を追跡するために s をprint
ロックinit
しました。構造体/クラスと同じで、別のプロジェクトで問題を再現しようとしましたが、うまくいきませんでした。しかし、問題に似たファイルを追加し、それが機能する理由の推測をお知らせします.
ロック
アトミック プロパティ ラッパー
モデル (ここのプロパティでデータ競合が発生するはずです)publicVariable2
更新 1: 完全な Xcode プロジェクト: https://drive.google.com/file/d/1IfAsOdHKOqfuOp-pSlP75FLF32iVraru/view?usp=sharing
ios - iOS NSInternalInconsistencyException スレッド化違反のクラッシュ
私は、サード パーティの iOS アプリによって使用される iOS SDK プロジェクトを持っています。最近、SDK の 1 つの API に関するクラッシュが報告されており、その原因は次のとおりです。
サード パーティのアプリによって呼び出される API は非同期であり、バックグラウンド スレッドで非同期に処理を行い、メイン スレッドで呼び出し元にコールバックを返します。
この例外は、メイン スレッドではなくバックグラウンド スレッドで UI 操作を実行しているときに発生することが多いことを認識しています。
ただし、呼び出し元にコールバックを返す前にその SDK API で次のコードを使用して、呼び出し元がメイン スレッドでコールバックを取得することを確認しているため、これがまだ発生する理由を理解できません。
スタックトレース:
呼び出し元がバックグラウンド スレッドでコールバックを取得する可能性はありますか?
swift - ディスパッチ グループのクラッシュ
Firebase からユーザー メッセージを取得するメソッドを作成しましたが、DispatchGroup
アプリを終了するとクラッシュし、このエラーが発生しますThread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
何が間違っているのかわかりません。助けて説明してください。
コード: