iOS 10:「[アプリ]実際のプリコミットハンドラー内にいる場合、CAの制限により、実際に新しいフェンスを追加することはできません。」


389

私のアプリを実行すると、Xcode 8b3のログにこのメッセージが表示されることがあります。Googleはまったく役に立たなかった。


2
UINavigationControllerデリゲートメソッドを呼び出していますか:fun navigationController(navigationController:UINavigationController、willShowViewController viewController:UIViewController、animated:Bool){}?
Norman G

2
willShowViewController 呼ばれることはありません、いいえ...
swalkner 2016

私も同じです。私はSpriteKitとSceneKitを使用していて、それらを疑っています!
ハワードロバット16

3
誰かがバグレポートを提出しますか?もうすぐです。
David DelMonte 2016

1
この返信をご覧ください。stackoverflow.com/a/39997761/6602495
Sneha

回答:


285

あなたのXcodeで:

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

スクリーンショット


4
追加情報をありがとう
amergin

26
コンソールにNSLog出力がランダムに表示されず、修正するためにこれを再度削除したことに注意してください。これは、私たちがAppleの常連客にさらされている「高級」プログラミングの詳細です。
16年

37
価値があるのは、方向が変更され、OS_ACTIVITY_MODE環境変数が無効になっているときにこのメッセージが表示されることです。
user2698617 16

5
注:これを追加すると、コンソールにもNSLogが表示されなくなります。
niravdesai21

4
これは火災警報器をオフにするようなものではありませんか?
ScottyBlades

191

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

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

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

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

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


1
このプライベートメソッド名とその構造を取得するためにデバッグに使用したツールについて詳しく説明していただけますか?
Oleksandr Karaberov

9
@AlexanderKaraberovホッパー逆アセンブラーを使用して、フレームワークバイナリの警告テキストとプライベートメソッドからのこのテキストへの参照を検索できます。
k06a 2016年

キーボードがスクロールインしたときにもこれが表示され、ビューのサイズを変更して応答するようにサブスクライブされたコントローラーがあります。
yo.ian.g 2017

82

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

OS_ACTIVITY_MODE = disable

ハードウェア->回転メニュー項目を使用してiPhone 7を回転させると、シミュレータでこれが表示されました。この環境変数により、偽のメッセージが消えました。
ジョージDガートン

1
以下の@Fooからの回答には、ハウツーの詳細が含まれているため、役に立ちます。
Kevin Owens、

1
また、制約の警告ログを出力しません
chirag shah

36
OPはメッセージの送信元を尋ねました。沈黙させる方法を言うだけでは正しい答えではありません。
iCaramba 2016

6
「IOS_ACTIVITY_MODE = disable」の回答は、すべてのロギングをオフにします。ログを表示したくない場合は、ログビューを閉じてください。本当にばかげた答え、それは非常に多くの票を持っていることを驚かせます!実際のメッセージに対処するために何もしません。コアデータを多用するGoogleのアプリは問題なく動作し、これらのメッセージやその他のメッセージは、最後のXcode更新のいずれかの後に表示され始めました。Appleがこの種の問題を解決できないことは悲しいことです。
ジョン

13

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

名前OS_ACTIVITY_MODEと値${DEBUG_ACTIVITY_MODE}を追加して確認します(製品->スキーム->スキームの編集->実行->引数->環境)。

ここに画像の説明を入力してください

ユーザー定義設定DEBUG_ACTIVITY_MODEを追加Any iOS Simulator SDKしてDebugから、値を追加して設定しますdisable(プロジェクト->ビルド設定-> +->ユーザー定義設定)。

ここに画像の説明を入力してください


うまくいきませんでした:上記のようにデバッグアクティビティモードを無効にしたにもかかわらず、コンソールにもこれが表示されています。
ヨハン

-1

修正するために、シミュレータからアプリを削除しました。

最初にCleanも実行しました。

オリエンテーションに関連することは何も引き起こさないと思います。この現象が始まる前に変更された最大の点は、SwiftフレームワークがNSLogメインスレッドではなくワーカースレッドを呼び出し始めたことです。


1
回転せずにシミュレーターで実行すると、最初はクリーンアップがうまくいきましたが、回転コマンドでもう一度テストするとすぐに同じエラーが報告されました。
2017

私はパンジェスチャーを使用しており、向きを変更したときにのみこのエラーが発生します。
ジェレミーアンドリュース2017

-8
OS_ACTIVITY_MODE = disable

これにより、実際のデバイスでデバッグする機能も無効になります(それ以降、実際のデバイスからのコンソール出力はありません)。


6
以前の回答をコピーしました(詳細
Ashley Mills

2
実際にはTL; DRが役立ちます。
Juan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.