Aufruf von Obj-C-Code von JavaScript über die Konsole: Argumente werden gelöscht?

9

Ich habe eine Zeit mit dieser Zeit.

Ich habe eine super-einfache Cocoa-App mit einem WebView, einer auf der Seite definierten WebScripting-API und einem einzelnen NSObject, das für diese API definiert ist. Wenn ich die Debugger-Tools (im eingebetteten WebView) einschalte, kann ich die API im JavaScript-Fensterobjekt sehen, und ich kann meine "api" -Eigenschaft darin definiert sehen - aber wenn ich die "get" -Methode der API aufruft, Die Argumente werden nicht serialisiert - wenn die Obj-C-Methode aufgerufen wird, fehlen die Argumente. Siehe unten, was hoffentlich illustriert:

Ich habe die Dokumente durchforstet, ich habe (anscheinend) die geeigneten Methoden festgelegt, um alles zu entlarven, was angezeigt werden muss, und ich kann die aufgerufene Methode sehen. Es muss etwas Dummes sein, das ich vermisse, aber als ein relativer Neuling für diese Umgebung sehe ich es nicht.

Vielen Dank im Voraus für Ihre Hilfe!

    
Chris Nunciato 18.04.2012, 16:27
quelle

3 Antworten

2

Haben Sie WebKitDeveloperExtras in den Standardbenutzereinstellungen auf YES gesetzt, wenn Sie senden - [NSUserDefaults registerDefaults:]?

    
JoeCortopassi 01.05.2012 19:34
quelle
1
___ qstnhdr ___ Aufruf von Obj-C-Code von JavaScript über die Konsole: Argumente werden gelöscht? ___ answer10503202 ___

Ich verarbeite Javascript im Hauptthread meiner App aus einer lokalen Datei, die im apps-Verzeichnis gespeichert ist. Ich überprüfe nach Anfangs- und Endtoken für die js-Funktionen, die ich gerade ausführe und ob die Funktion eine Variable enthält.

Hoffentlich kann dies Ihnen einige gute Ideen für Ihr Problem geben. Sie könnten auch Warnungen in der js tun, um zu sehen, ob die Werte korrekt beim Ausführen der App posten (Ich bin mir sicher, dass Sie schon darüber nachgedacht haben, aber es ist erwähnenswert.) Happy coding! Ich hoffe, das hilft!

in der .h-Datei define:

%Vor%

In der .m-Datei:

%Vor%     
___ antwort10401232 ___

Je nachdem, welche Version von Xcode Sie verwenden, könnte ein bekannter Fehler auftreten. Wenn Sie LLDB für etwas anderes als die neueste Version verwenden, gibt es möglicherweise nicht die richtigen Variablen im Debugger. Die Lösung bestand darin, GDB anstelle von LLDB zu verwenden, bis Apple das Problem behebt. Aber ich denke, dass sie das Problem in der neuesten Version behoben haben. Ich würde den Debugger ändern, um GDB zu verwenden und zu sehen, wenn Sie die richtigen Variablen in Xcode erhalten. (Produkt- & gt; Bearbeiten Scheme ...- & gt; Run - & gt; Debugger). Ich bin jedoch in iOS auf dieses Problem gestoßen, weshalb ich seine Anwendbarkeit für OSX nicht kenne. Einen Versuch wert, jedenfalls.

Ich bin ursprünglich auf das Problem gestoßen: Ссылка

    
___ qstntxt ___

Ich habe eine Zeit mit dieser Zeit.

Ich habe eine super-einfache Cocoa-App mit einem WebView, einer auf der Seite definierten WebScripting-API und einem einzelnen NSObject, das für diese API definiert ist. Wenn ich die Debugger-Tools (im eingebetteten WebView) einschalte, kann ich die API im JavaScript-Fensterobjekt sehen, und ich kann meine "api" -Eigenschaft darin definiert sehen - aber wenn ich die "get" -Methode der API aufruft, Die Argumente werden nicht serialisiert - wenn die Obj-C-Methode aufgerufen wird, fehlen die Argumente. Siehe unten, was hoffentlich illustriert:

Ich habe die Dokumente durchforstet, ich habe (anscheinend) die geeigneten Methoden festgelegt, um alles zu entlarven, was angezeigt werden muss, und ich kann die aufgerufene Methode sehen. Es muss etwas Dummes sein, das ich vermisse, aber als ein relativer Neuling für diese Umgebung sehe ich es nicht.

Vielen Dank im Voraus für Ihre Hilfe!

    
___ answer10403175 ___

Haben Sie WebKitDeveloperExtras in den Standardbenutzereinstellungen auf YES gesetzt, wenn Sie senden - [NSUserDefaults registerDefaults:]?

    
___ tag123macos ___ macOS (früher bekannt als OS X oder Mac OS X) ist das Desktop-Betriebssystem von Apple, das auf Macintosh-Computern gefunden wurde. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Verwendung von macOS-APIs oder Mac OS-spezifischem Verhalten bezieht, nicht weil Sie Ihren Code auf macOS ausführen. Fragen zur Verwendung oder Fehlerbehebung von macOS sind off-topic. ___ tag123cocoa ___ Cocoa ist Apples Entwicklungsumgebung für MacOS, bestehend aus Foundation, Application Kit und Core Data. Verwenden Sie den "Kakao-Touch" -Tag für iOS-Fragen. ___ tag123webkit ___ WebKit ist eine Open-Source-Web-Content-Engine für Browser und andere Anwendungen wie Apple Safari, Mail, App Store und verschiedene mobile Browser einschließlich der vorinstallierten Browser für Android, iOS, RIM Blackberry, Symbian und WebOS. ___ tag123objectivec ___ Dieses Tag sollte nur bei Fragen verwendet werden, die sich auf Objective-C-Funktionen beziehen oder von Code in der Sprache abhängen. Die Tags [Kakao] und [Kakao-Touch] sollten verwendet werden, um nach Frameworks oder Klassen von Apple zu fragen. Verwenden Sie die zugehörigen Tags [ios], [macos], [apple-watch] und [tvos] für Probleme, die für diese Plattformen spezifisch sind. ___
Aaron Hayman 01.05.2012 16:56
quelle
0

Ich verarbeite Javascript im Hauptthread meiner App aus einer lokalen Datei, die im apps-Verzeichnis gespeichert ist. Ich überprüfe nach Anfangs- und Endtoken für die js-Funktionen, die ich gerade ausführe und ob die Funktion eine Variable enthält.

Hoffentlich kann dies Ihnen einige gute Ideen für Ihr Problem geben. Sie könnten auch Warnungen in der js tun, um zu sehen, ob die Werte korrekt beim Ausführen der App posten (Ich bin mir sicher, dass Sie schon darüber nachgedacht haben, aber es ist erwähnenswert.) Happy coding! Ich hoffe, das hilft!

in der .h-Datei define:

%Vor%

In der .m-Datei:

%Vor%     
tony.stack 08.05.2012 17:10
quelle

Tags und Links