สตอรี่บอร์ด iOS9 การกระทำที่ไม่สามารถจัดการได้คืออะไร (handleNonLaunchSpecificActions)?


84

ฉันสังเกตเห็นข้อผิดพลาดต่อไปนี้ปรากฏขึ้นในคอนโซลเมื่อเรียกใช้แอพของฉันบน iOS 9 เมื่อใช้สตอรีบอร์ด ฉันใช้ xCode7 นี่คือสิ่งที่ฉันต้องกังวลหรือไม่?

-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion:] ** unhandled action -> <FBSSceneSnapshotAction: 0x176bfb20> {
    handler = remote;
    info = <BSSettings: 0x176a5d90> {
        (1) = 5;
    };
}

Apple บอกว่า iOS 9 มีความเสถียรดังนั้นฉันเดาว่าคุณไม่ควรกังวล ;-) ป.ล. ฉันมีปัญหาเดียวกันและนักพัฒนาอื่น ๆ ก็เช่นกันstackoverflow.com/questions/32344082/…
Roma

11
ไม่แน่ใจว่าเกี่ยวข้องกับสตอรี่บอร์ดหรือเปล่าฉันเห็นมันเหมือนกันในแอปที่ไม่ใช่สตอรี่บอร์ด
koen

มีคำเตือนอื่น ๆ ในรุ่นนี้หรือไม่? อาจเป็นคำเตือนที่ดูเหมือนไม่สำคัญ?
Joe Susnick

ฉันไม่ได้ใช้สตอรี่บอร์ดและได้รับคำเตือนนี้ด้วย จะปรากฏขึ้นเมื่อคุณล็อกตัวจำลองด้วย CMD + L จากนั้น "เลื่อนเพื่อปลดล็อก" เพื่อกลับเข้าสู่แอป
SDW

เมื่อดูบันทึกอุปกรณ์อาจมีส่วนเกี่ยวข้องกับการปิดหน้าจอของอุปกรณ์โดยอัตโนมัติ บรรทัดSpringBoard[54] <Warning>: [MPUSystemMediaControls] Disabling lock screen media controls updates for screen turning off.จะถูกบันทึกก่อนข้อความแสดงข้อผิดพลาดที่อ้างถึง
Christian

คำตอบ:


32

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

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

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

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

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

ฉันไม่รู้ว่าBSคำนำหน้าBSSettingsมีไว้เพื่ออะไร แต่

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

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

แก้ไข:

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

ฉาก

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

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

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

จากนั้นฉันมองไปที่ FBSceneSnapshotAction อีกครั้ง ปรากฎว่ามีซูเปอร์คลาสที่เรียกว่าBSActionที่เรียกว่า

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

รายการการดำเนินการ

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

การดำเนินการบางอย่างอาจถูกส่งไปยังการเรียกกลับของตัวแทนแอปในขณะที่การดำเนินการอื่น ๆ จะได้รับการจัดการภายใน

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


การตรวจสอบที่ดี แต่นี่เป็นสิ่งที่น่าสนใจฉันได้รับข้อผิดพลาด OP ที่แน่นอนเมื่อใช้ Apple API ส่วนตัว ฉันเดาว่าเนื่องจากฉันใช้ API ส่วนตัวฉันจึงได้รับบันทึกคอนโซลสำหรับวิศวกรของ Apple
OhadM

1
@Moshe Apple จ่ายเงินให้คุณเท่าไหร่สำหรับการสืบสวนในนามของพวกเขา? แต่พวกเขาอาจไม่สนใจมัน : p
codelearner

"ยื่นเรดาร์เกี่ยวกับเรื่องนี้" หมายความว่าอย่างไร
Paul Masri-Stone

หมายถึงการยื่นรายงานข้อบกพร่องด้วยเครื่องมือรายงานข้อบกพร่องของ Apple
Moshe

12

AFAIK ข้อมูลข้างต้นเกี่ยวข้องกับ iOS ระหว่างการสแนปชอตหน้าจอ (ฉันคิดว่าการดับเบิลคลิกที่โฮมมัลติทาสก์ที่เกี่ยวข้องกับพฤติกรรมที่เกี่ยวข้อง) ฉันตรวจสอบแอปพลิเคชันของฉันอย่างละเอียดและดูเหมือนว่าจะไม่ได้รับพฤติกรรมข้างเคียงใด ๆ คุณสามารถเพิกเฉยได้อย่างปลอดภัยในตอนนี้

คุณสามารถใช้หมวดหมู่ง่ายๆที่สำคัญต่อไปนี้เพื่อทดสอบตัวเองกับการเรียกใช้ฟังก์ชันข้างต้น:


1

ฉันคิดออกแล้วมันจะเกิดขึ้นเมื่อคุณมีวิธี IBAction ที่ประกาศในไฟล์. h หรือ. m แต่คุณไม่ได้ผูกมันกับการควบคุมใด ๆ

.m ตัวอย่าง:

- (IBAction)click:(id)sender{
}

แต่ไม่ได้กำหนดวิธีนี้ให้กับการควบคุมใด ๆ ในกระดานเรื่องราว


นี่ไม่ใช่กรณีในแอปของฉัน - ฉันไม่มี IBActions ที่ไม่ถูกผูกไว้และฉันก็ได้รับข้อความนี้เช่นกัน แอพของฉันเป็นแอพ Swift
henrikstroem

1

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

รุ่น Swift 2:

import UIKit

extension UIApplication {
    func _handleNonLaunchSpecificActions(arg1: AnyObject, forScene arg2: AnyObject, withTransitionContext arg3: AnyObject, completion completionHandler: () -> Void) {
        //whatever you want to do in this catch
        print("handleNonLaunchSpecificActions catched")
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.