Không có gì sai với mã của bạn. Đây là một thông báo ghi nhật ký nội bộ của Apple và bạn nên gửi một radar về nó.
Có hai gợi ý cho thấy đây có thể là mã của Apple:
Dấu gạch dưới đứng đầu tên phương thức _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
là một quy ước chỉ ra rằng phương thức là riêng tư / nội bộ đối với lớp mà nó được khai báo. (Xem nhận xét này .)
Thật hợp lý khi đoán rằng tiền tố hai chữ cái trong FBSSceneSnapshotAction
là viết tắt của FrontBoard, theo Rene Ritchie trong " Danh sách mong muốn của iOS 9: Chế độ khách" là một phần của toàn bộ gia đình phần mềm liên quan đến việc khởi chạy ứng dụng:
Với iOS 8, Apple đã cấu trúc lại trình quản lý hệ thống của mình, SpringBoard, thành một số thành phần nhỏ hơn, tập trung hơn. Ngoài BackBoard, vốn đã được tách ra để xử lý các tác vụ nền, họ đã thêm Frontboard cho các tác vụ nền trước. Họ cũng thêm PreBoard để xử lý Màn hình khóa trong các điều kiện an toàn, được mã hóa. [...]
Tôi không biết BS
tiền tố trong BSSettings
dùng để làm gì, nhưng
BS
là viết tắt của BackBoard Settings
, và một phân tích về thông báo nhật ký này sẽ chỉ ra rằng đó không phải là bất cứ điều gì bạn đã làm và bạn nên gửi một radar với các bước để tái tạo thông báo ghi nhật ký.
Nếu bạn muốn thử và lấy dấu vết ngăn xếp, bạn có thể triển khai danh mục được liên kết đến đây . Một số người cho rằng ghi đè API riêng là một ý tưởng tồi, nhưng trong trường hợp này, việc chèn tạm thời để lấy dấu vết ngăn xếp không thể quá nguy hại.
BIÊN TẬP:
Nhưng, chúng tôi vẫn muốn biết hành động này là gì. Vì vậy, tôi đã đặt một breakpoint -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
và bắt đầu in ra các giá trị đăng ký và tìm thấy một lớp được gọi là FBSceneImpl
có rất nhiều thông tin về ứng dụng của tôi:
Chúng tôi có thể tìm ra phương thức riêng nào được gọi tiếp theo (được lưu trữ trong bộ đếm chương trình, con trỏ lệnh, thanh ghi 15.)
Tôi đã thử tìm FBSceneSnapshotAction
tham chiếu chưa xử lý được tham chiếu trong nhật ký, nhưng không có xúc xắc. Sau đó, tôi phân lớp phụ UIApplication và ghi đè _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. Bây giờ tôi đã có thể trực tiếp thực hiện hành động, nhưng chúng tôi vẫn chưa biết nó là gì.
Sau đó, tôi xem lại FBSceneSnapshotAction. Hóa ra nó có một lớp cha được gọi là BSAction
.
Sau đó, tôi đã viết một công cụ tương tự như RuntimeBrowser và tra cứu tất cả các lớp con của BSAction. Nó chỉ ra rằng có một danh sách khá nhiều trong số họ:
Hai tên phương thức mà chúng ta có (một từ nhật ký và một từ bộ đếm chương trình trên thiết bị) cho biết rằng các hành động này được sử dụng để chuyển các hành động xung quanh hệ thống.
Một số hành động có thể được gửi tới lệnh gọi lại của đại biểu ứng dụng, trong khi những hành động khác được xử lý nội bộ.
Điều đang xảy ra ở đây là có một hành động không được xử lý chính xác và hệ thống đang ghi nhận nó. Rõ ràng là chúng tôi không nên nhìn thấy nó.