ข้อผิดพลาด: _handleNonLaunchSpecificActions ใน iOS9


157

ฉันได้รับข้อผิดพลาดต่อไปนี้ใน iOS 9:

    -[UIApplication_handleNonLaunchSpecificActions:
      forScene:
      withTransitionContext:
      completion:] unhandled action -> 
      <FBSSceneSnapshotAction: 0x150b2aef0> 
       {
            handler          = remote;
            info = <BSSettings: 0x15333f650> 
            {
                (1) = 5;
            };
        }

มีคนอื่นพบข้อผิดพลาดนี้หรือว่ามันมีความหมาย? เกิดอะไรขึ้น?


6
ยังอยู่ใน iOS9 โพสต์รุ่นเบต้า จะดีที่จะเข้าใจว่าปัญหาคืออะไรและความหมายของมัน
Roddy

11
ฉันมีปัญหาเดียวกันเมื่อล็อค iPhone ของฉันเมื่อแอพของฉันทำงานอยู่ iOS 9.0, XCode 7.0
NKorotkov

5
ดูเหมือนจะเป็นข้อบกพร่องของ Apple เนื่องจากโครงการใหม่ล่าสุดที่สร้างขึ้นด้วย Xcode 7 มีปัญหาตรงนี้เช่นกัน
Hongfei

12
มีบุญใดบ้างที่เคยพูดถึงในฟอรัมนักพัฒนาของ Apple หรือไม่? ดูเหมือนว่าข้อผิดพลาดทุกประเภทจะถูกปิดด้วย "ทำไมคุณต้องการทำเช่นนั้นหาก Apple ไม่ต้องการให้คุณ?" เป็นจุดสุดท้ายของการหมดหวังเมื่อต้องการแก้ไขปัญหา
Roddy

11
อ้างถึงคำถามstackoverflow.com/questions/32658037/… - สิ่งนี้กล่าวถึงปัญหาเดียวกัน
iPhone Guy

คำตอบ:


10

ไม่มีอะไรผิดปกติกับรหัสของคุณ นี่คือข้อความบันทึกภายในของ Apple และคุณควรยื่นเรดาร์เกี่ยวกับเรื่องนี้

มีคำใบ้สองข้อที่แสดงว่านี่อาจเป็นรหัสของ Apple

  1. ขีดล่างที่นำชื่อเมธอด_handleNonLaunchSpecificActions:forScene:withTransitionContext:completionเป็นแบบแผนที่ระบุว่าวิธีนั้นเป็นแบบส่วนตัว / ภายในกับคลาสที่มีการประกาศใน (ดูความคิดเห็นนี้)

  2. มีเหตุผลที่จะคาดเดาว่าคำนำหน้าตัวอักษรสองตัวในFBSSceneSnapshotActionนั้นย่อสำหรับ FrontBoard ซึ่งตาม Rene Ritchie ใน " iOS 9 รายการสิ่งที่ปรารถนา: โหมดผู้เยี่ยมชม"เป็นส่วนหนึ่งของตระกูลซอฟต์แวร์ทั้งหมดที่เกี่ยวข้องกับการเปิดตัวแอพ:

ด้วย iOS 8 แอปเปิ้ลได้ปรับโครงสร้างผู้จัดการระบบ SpringBoard เป็นส่วนประกอบที่เล็กกว่าและมีความสำคัญมากกว่า นอกจาก BackBoard แล้วที่ถูกแยกออกเพื่อจัดการกับงานพื้นหลังพวกเขาได้เพิ่ม Frontboard สำหรับงานเบื้องหน้า พวกเขายังเพิ่ม PreBoard เพื่อจัดการกับหน้าจอล็อคภายใต้เงื่อนไขที่ปลอดภัยและเข้ารหัส [ ... ]

ฉันไม่ทราบว่าBSคำนำหน้าใช้BSSettingsสำหรับอะไร แต่การวิเคราะห์ข้อความบันทึกนี้จะระบุว่าไม่ใช่สิ่งที่คุณทำและคุณควรยื่นเรดาร์ด้วยขั้นตอนในการทำซ้ำข้อความบันทึก

หากคุณต้องการที่จะลองและคว้ากองติดตามคุณสามารถใช้หมวดหมู่ที่เชื่อมโยงกับที่นี่ บางคนอาจแย้งว่าการลบล้าง API ส่วนตัวนั้นเป็นความคิดที่ไม่ดี แต่ในกรณีนี้การฉีดชั่วคราวเพื่อดึงร่องรอยสแต็กจะไม่เป็นอันตรายเกินไป

แก้ไข:

แต่เรายังต้องการทราบว่าการกระทำนี้คืออะไร ดังนั้นฉันจึงใส่เบรกพอยต์-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]และเริ่มพิมพ์ค่าลงทะเบียนและพบคลาสที่เรียกว่าFBSceneImplซึ่งมีข้อมูลมากมายเกี่ยวกับแอปพลิเคชันของฉัน:

ฉาก

เราสามารถค้นหาวิธีส่วนตัวที่เรียกว่าถัดไป (เก็บไว้ในตัวนับโปรแกรมลงทะเบียน 15)

เคาน์เตอร์โปรแกรม

ฉันพยายามค้นหาการFBSceneSnapshotActionอ้างอิงที่ไม่มีการจัดการในบันทึก แต่ไม่มีลูกเต๋า แล้วฉัน subclassed UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completionและสถานภาพ ตอนนี้ฉันสามารถทำกิจกรรมได้โดยตรง แต่ถึงกระนั้นเราก็ไม่รู้ว่ามันคืออะไร

จากนั้นฉันดู FBSceneSnapshotAction อีกครั้ง ปรากฎว่ามันมี superclass BSActionที่เรียกว่า

จากนั้นฉันก็เขียนเครื่องมือคล้ายกับRuntimeBrowserและค้นหา subclasses ทั้งหมดของ BSAction ปรากฎว่ามีรายการของพวกเขาค่อนข้างมาก:

รายการการกระทำ

ชื่อเมธอดสองชื่อที่เรามี (หนึ่งชื่อจากบันทึกและอีกชื่อหนึ่งจากตัวนับโปรแกรมบนอุปกรณ์) ระบุว่าการกระทำเหล่านี้ใช้ภายใต้ประทุนเพื่อส่งการกระทำรอบ ๆ ระบบ

การกระทำบางอย่างอาจส่งถึงการโทรกลับของผู้แทนแอป

สิ่งที่เกิดขึ้นที่นี่คือมีการดำเนินการที่ไม่ได้จัดการอย่างถูกต้องและระบบสังเกตเห็น เราไม่ควรเห็นมันอย่างชัดเจน


ขออภัยนี่ไม่ใช่คำตอบจริงๆ มากกว่าความคิดเห็นต่อไปนี้ รหัสนี้เป็นข้อผิดพลาดภายในของ Apple เป็นอย่างมากซึ่งไม่เป็นปัญหา คาดเดาไม่ได้จริงๆความละเอียดและคำอธิบาย iOS8 ที่ให้ไว้ไม่เกี่ยวข้องเนื่องจากข้อผิดพลาดปรากฏเฉพาะใน iOS9 (สิ่งนี้ไม่ได้เกิดขึ้นใน iOS8)
Roddy

2
คำตอบของ "สิ่งที่ผิด" คือสิ่งที่อยู่ภายใน SpringBoard ยังไม่ได้จัดการกับการกระทำภาพรวม นั่นคือสิ่งที่บันทึกข้อความบอกว่า ไม่มีใครอื่นนอกจาก Apple ที่สามารถบอกคุณได้
Moshe

ความจริงที่ว่าข้อความการบันทึกนี้ไม่ปรากฏบน iOS 8 นั้นไม่เกี่ยวข้องจริงๆ มันเป็นข้อความบันทึกการหลงทางที่ควรยื่นด้วยเรดาร์
Moshe

ฉันสังเกตเห็นเมื่อเช้านี้ว่ามีใครบางคนได้อัปเดตคำถามของฉันและนั่นไม่ใช่สิ่งที่ฉันถามตอนแรกซึ่งเป็นสาเหตุที่ทำให้มีการตัดการเชื่อมต่อเล็กน้อย ไม่ทราบด้วยซ้ำว่าเป็นไปได้ที่คำถามอื่น ๆ จะได้รับการอัปเดต
Roddy

หากต้องการตอบคำถามเดิมของคุณ: ไม่มีสิ่งอื่นใดนอกจากกรุณาส่งเรดาร์
Moshe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.