iOS 10:“ [แอป] หากเราอยู่ในตัวจัดการการส่งมอบจริงเราไม่สามารถเพิ่มรั้วใหม่ใด ๆ เนื่องจากข้อ จำกัด ของ CA”


389

บางครั้งฉันได้รับข้อความนี้ในบันทึกของ Xcode 8b3 เมื่อเรียกใช้แอปของฉันดูเหมือนว่าทุกอย่างจะทำงาน แต่ฉันต้องการทราบว่าสิ่งนี้มาจากไหน Google ไม่ได้ช่วยอะไรเลย


2
คุณกำลังเรียกวิธีการมอบหมาย UINavigationController: fun navigationController (navigationController: UINavigationController, willShowViewController viewController: UIViewController, ภาพเคลื่อนไหว: Bool) {}?
นอร์แมน G

2
willShowViewController ไม่เคยเรียกว่าไม่มี ...
swalkner

ฉันได้รับเหมือนกัน ฉันกำลังใช้ SpriteKit และ SceneKit และสงสัยพวกเขา!
Howard Lovatt

3
ทุกคนยื่นรายงานข้อผิดพลาด? ฉันกำลังจะไป
David DelMonte

1
โปรดดูคำตอบนี้ stackoverflow.com/a/39997761/6602495
Sneha

คำตอบ:


285

ใน Xcode ของคุณ:

  • คลิกที่ชื่อชุดรูปแบบที่ใช้งานอยู่ถัดจากปุ่มหยุด
  • คลิกที่แก้ไขโครงการ ...
  • ใน Run (Debug) เลือกแท็บอาร์กิวเมนต์
  • ในตัวแปรสภาพแวดล้อมคลิก +
  • เพิ่มตัวแปร: OS_ACTIVITY_MODE = ปิดการใช้งาน

ภาพหน้าจอ


4
ขอบคุณสำหรับข้อมูลเพิ่มเติม
amergin

26
โปรดระวังว่าฉันถูกสุ่มรับไม่มีเอาต์พุต NSLog ไปยังคอนโซลและลบสิ่งนี้ออกอีกครั้งเพื่อแก้ไข นี่เป็นมากกว่าการเขียนโปรแกรม 'ชั้นสูง' ที่เราต้องเจอกับลูกน้องที่แอปเปิล
amergin

37
สำหรับสิ่งที่คุ้มค่าฉันจะได้รับข้อความนี้ทุกครั้งที่มีการเปลี่ยนแปลงการวางแนวและฉันปิดการใช้งานตัวแปรสภาพแวดล้อม OS_ACTIVITY_MODE
2698617

5
หมายเหตุ: การเพิ่มสิ่งนี้คุณจะไม่เห็น NSLog ในคอนโซลด้วย
niravdesai21

4
นี่ไม่เหมือนกับการปิดสัญญาณเตือนไฟไหม้ใช่ไหม
ScottyBlades

191

มันมาจาก+[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]ผ่าน os_log API ไม่ได้ขึ้นอยู่กับส่วนประกอบ / กรอบงานอื่นที่คุณใช้ (เฉพาะจาก UIKit) - มันทำซ้ำในโครงการแอพพลิเคชั่นมุมมองเดียวที่สะอาดเกี่ยวกับการเปลี่ยนการวางแนวอินเตอร์เฟส

วิธีนี้ประกอบด้วย 2 ส่วนคือ

  1. การเพิ่มตัวจัดการ precommit ที่ส่งไปยังรายการตัวจัดการ
  2. ทำงานบางอย่างที่ขึ้นอยู่กับสถานะสถานะเครื่องปัจจุบัน จำกัด

เมื่อส่วนที่สองล้มเหลว (ดูเหมือนว่าการเปลี่ยนแปลงที่ไม่ได้รับอนุญาต) จะพิมพ์ข้อความด้านบนเพื่อบันทึกข้อผิดพลาด อย่างไรก็ตามฉันคิดว่าปัญหานี้ไม่ร้ายแรง: มี 2 กรณียืนยันเพิ่มเติมในวิธีนี้ซึ่งจะนำไปสู่ความผิดพลาดในการแก้ปัญหา

ดูเหมือนว่าเรดาร์นั้นดีที่สุดที่เราสามารถทำได้


1
คุณช่วยกรุณาอธิบายเพิ่มเติมเกี่ยวกับเครื่องมือที่คุณใช้สำหรับการดีบักเพื่อรับชื่อเมธอดส่วนตัวและโครงสร้างของมันได้หรือไม่?
Oleksandr Karaberov

9
@AlexanderKaraberov คุณสามารถใช้ Hopper Disassembler เพื่อค้นหาข้อความเตือนในไบนารีเฟรมเวิร์กและการอ้างอิงข้อความนี้จากวิธีส่วนตัว
k06a

ฉันยังได้รับสิ่งนี้เมื่อแป้นพิมพ์เลื่อนเข้าและฉันมีตัวควบคุมที่สมัครเป็นสมาชิกเพื่อตอบสนองโดยปรับขนาดมุมมอง
yo.ian.g

82

ลองวางสิ่งต่อไปนี้ลงในenvironment variablesสำหรับโครงร่างใต้run(debug)

OS_ACTIVITY_MODE = disable

ฉันได้สิ่งนี้ในเครื่องจำลองเมื่อหมุน iPhone 7 โดยใช้ฮาร์ดแวร์ -> หมุนรายการเมนู ตัวแปรสภาพแวดล้อมนี้ทำให้ข้อความปลอมออกไป
George D Girton

1
คำตอบจาก @Foo ด้านล่างมีประโยชน์เพราะมีรายละเอียดวิธีการ
Kevin Owens

1
นอกจากนี้ยังไม่พิมพ์บันทึกคำเตือนข้อ จำกัด
chirag shah

36
OP ถามว่าข้อความมาจากไหน เพียงแค่พูดว่าจะเงียบได้อย่างไรไม่ใช่คำตอบที่ถูกต้อง
iCaramba

6
คำตอบ "IOS_ACTIVITY_MODE = disable" จะปิดการบันทึกทั้งหมด! เพียงปิดมุมมองการบันทึกถ้าคุณไม่ต้องการดูบันทึก คำตอบที่ไร้สาระจริงๆน่าทึ่งมากที่มีคะแนนเสียงมากมาย! ไม่ทำสิ่งใดเพื่อแก้ไขข้อความจริง แอพของเราที่ใช้ข้อมูลหลักทำงานได้ดีข้อความเหล่านี้และอื่น ๆ เริ่มปรากฏขึ้นหลังจากอัปเดต Xcode ล่าสุด น่าเศร้าที่ Apple ไม่สามารถแก้ไขปัญหาประเภทนี้ได้
John

13

เราสามารถปิดเสียงด้วยวิธีนี้ (อุปกรณ์และเครื่องมือจำลองต้องการค่าที่แตกต่าง):

เพิ่มชื่อOS_ACTIVITY_MODEและค่า${DEBUG_ACTIVITY_MODE}และตรวจสอบ (ในผลิตภัณฑ์ -> โครงการ -> แก้ไขโครงการ -> เรียกใช้ -> อาร์กิวเมนต์ -> สภาพแวดล้อม)

ป้อนคำอธิบายรูปภาพที่นี่

เพิ่มการตั้งค่าผู้ใช้กำหนดDEBUG_ACTIVITY_MODEแล้วเพิ่มAny iOS Simulator SDKสำหรับDebugและตั้งค่าของมันไปdisable(ในโครงการ -> การตั้งค่ารูปร่าง -> + -> การตั้งค่าผู้ใช้กำหนด)

ป้อนคำอธิบายรูปภาพที่นี่


ไม่ได้ผลสำหรับฉัน: ฉันยังเห็นสิ่งนี้ในคอนโซลแม้ว่าจะปิดใช้งานโหมดกิจกรรมการดีบักตามที่แนะนำไว้ข้างต้นแล้ว
Johan

-1

ในการแก้ไขฉันลบแอพออกจาก Simulator

ฉันก็วิ่งคลีนก่อน

ฉันไม่คิดว่าสิ่งใดที่เกี่ยวข้องกับการวางแนวเรียกมัน สิ่งที่ยิ่งใหญ่ที่สุดที่เปลี่ยนไปก่อนที่อาการนี้จะเริ่มต้นคือกรอบงาน Swift เริ่มเรียกNSLogเธรดผู้ปฏิบัติงานแทนเธรดหลัก


1
ตอนแรกฉันทำความสะอาดได้ดีเมื่อฉันวิ่งในเครื่องจำลองโดยไม่ต้องหมุน แต่ทันทีที่ฉันทดสอบอีกครั้งด้วยคำสั่งการหมุนมันรายงานข้อผิดพลาดเดียวกัน
cheznead

ฉันใช้รูปแบบการแพนและรับข้อผิดพลาดนี้เมื่อเปลี่ยนการวางแนว
Jeremy Andrews

-8
OS_ACTIVITY_MODE = disable

สิ่งนี้จะปิดใช้งานความสามารถในการตรวจแก้จุดบกพร่องในอุปกรณ์จริง (ไม่มีคอนโซลเอาต์พุตจากอุปกรณ์จริงตั้งแต่นั้นมา)


6
คุณเพิ่งคัดลอกคำตอบก่อนหน้านี้ (โดยมีรายละเอียดน้อยลง)
Ashley Mills

2
จริงๆแล้ว TL; DR ช่วย
Juan Je García
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.