Access Private UIKit-Funktion ohne Verwendung von Bridging Header

Betrachten Sie die private C-Funktion_UICreateScreenUIImage, das ein @ zurückgiUIImage Schnappschuss des aktuellen Gerätebildschirms:

OBJC_EXTERN UIImage *_UICreateScreenUIImage(void) NS_RETURNS_RETAINED;

Ich kann dies in einen Bridging-Header einfügen und in Swift folgendermaßen darauf zugreifen:

MyApp-Bridging-Header.h

@import UIKit;
UIImage *_UICreateScreenUIImage(void) NS_RETURNS_RETAINED;

MyClass.swift

let image = _UICreateScreenUIImage()
print(image) // <UIImage: 0x7fc4ba6081c0>, {375, 667}

Gibt es eine Möglichkeit, auf die ich zugreifen kann_UICreateScreenUIImage in reinem Swift ohne Verwendung eines Bridging-Headers?

in erster Gedanke war, eine Erweiterung für @ zu erstelleUIImage, aber die Erweiterung erwartet, dass ich den Hauptteil der Funktion in der Erweiterung deklariere:

extension UIImage {
    public func _UICreateScreenUIImage(_: Void) -> UIImage // "Expected '{' in body of function declaration"
}

Diese Implementierung ist ohnehin fehlerhaft, da_UICreateScreenUIImage ist keine Methode aufUIImage.

Ist es möglich, diese Methode in reinem Swift verfügbar zu machen und darauf zuzugreifen?

Die Leute scheinen meine Frage mit "Wie mache ich einen Screenshot?" Zu verwechseln. Das frage ich nicht. Ich frage, wie ich auf Methoden wie @ zugreifen kanUIImage *_UICreateScreenUIImage(void); in Swift. Es kann sich um eine beliebige private Methode handeln, z. B.+(UIImage *)_deviceSpecificImageNamed:(NSString *)name inBundle:(NSBundle *)bundle; oder+(UIImage *)_pu_PhotosUIImageNamed:(NSString *)name;.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage