web-dev-qa-db-ja.com

iOS 10:「[App]実際のpre-commitハンドラにいる場合、CAの制限により、新しいフェンスを実際に追加することはできません」

私のアプリを実行しているときにXcode 8b3のログにこのメッセージが表示されることがありますが、すべてうまくいくようですが、どこから来たのか知りたいのですが。 Googleはまったく助けにならなかった。

386
swalkner

あなたのXcodeで:

  • [停止]ボタンの横にあるアクティブなスキーム名をクリックしてください。
  • スキーム編集...をクリックします。
  • 実行(デバッグ)で引数タブを選択します。
  • 環境変数でクリックします+
  • 変数を追加します。OS_ACTIVITY_MODE = disable

screenshot

284
Fouad

Os_log APIを介して+[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]から来ます。それはあなたが使用している他のコンポーネント/フレームワークに依存しません(UIKitからのみ) - それはインタフェースの向きを変えることできれいなシングルビューアプリケーションプロジェクトで再現します。

このメソッドは2つの部分から構成されています。

  1. 渡されたプリコミットハンドラをハンドラのリストに追加します。
  2. 現在の有限状態機械の状態に依存する、いくつかの作業を行います。

2番目の部分が失敗すると(禁止された移行のように見えます)、それは上記のメッセージをエラーログに出力します。しかし、私はこの問題は致命的ではないと思います。このメソッドには2つの追加のアサートケースがあり、それがデバッグのクラッシュにつながります。

レーダーは私たちができる最善のようです。

189
Roman Ermolov

run(debug)の下のスキームのenvironment variablesに以下を入れてみてください

OS_ACTIVITY_MODE = disable
84
Nick Peachey

この方法でミュートすることができます(デバイスとシミュレータには異なる値が必要です)。

Name OS_ACTIVITY_MODEとValue ${DEBUG_ACTIVITY_MODE}を追加して確認します(Product - > Scheme - > Edit Scheme - > Run - > Arguments - > Environmentの順に選択します)。

enter image description here

ユーザー定義設定DEBUG_ACTIVITY_MODEを追加し、次にDebugAny iOS Simulator SDKを追加し、その値をdisableに設定します(プロジェクト - >ビルド設定 - > + - >ユーザー定義設定)。

enter image description here

16
Igor