Funktionsweise NimbleKit?

Blain

Aktives Mitglied
Thread Starter
Registriert
06.07.2006
Beiträge
1.526
Hallo zusammen,

kann mir jemand genau erklären, wie eigentlich NimbleKit hinter den Kulissen funtioniert ?

Ich habe mit NimbleKit eine iPhone Applikation geschrieben und bin mit ausschließlich HTML, CSS und JavaScript ausgekommen. Meine Erkenntnisse sind: Mit NimbleKit kann man einerseits sehr schnell Applikationen ohne Objective-C kenntnisse erstellen, aber andererseits ist man natürlich nicht so flexibel wie wenn man mit Obj.-C entwickelt (alleine schon was die Anzahl der Klassen betrifft...).

Aber wie es genau hinter den Kulissen funktioniert habe ich immer noch nicht richtig kapiert. Ich habe nur eine Vermutung:

- Instanziert man per JavaScript ein Objekt einer Nimblekit-Klasse, so wrappert NimbleKit eigentlich die Objective-C Klasse und instanziert auch davon noch ein zweites Objekt. Die JavaScript Eingangsparameter der JavaScript-Methoden werden dann an das eigentliche Obj-C Objekt weitergeschickt. Das Objective-C Objekt nimmt über seine Methoden die Formalparameter entgegen verarbeitet sie und spuckt das dann wieder über den Rückgabewert aus, welcher dann wieder vom JavaScript-Objekt entgegengenommen und wieder in den JS-Code zurückgegeben...


Habe ich das so einigermassen richtig erklärt ? Auf der Homepage und im NimbleKit-Forum steht leider nix über die Funktionsweise....

Grüße
Blain
 

Kümmelkorn

Aktives Mitglied
Registriert
06.10.2008
Beiträge
1.941
Ich kann es aus Ermangelung von Snow Leopard nicht ausprobieren, aber es ist nicht so schwer zu erraten, was NimblKit macht: Es produziert WebApps fürs iPhone. Da wird nix übersetzt in Objective-C oder auf native Objective-C Klassen zugegriffen, zumindest nicht von NimbleKit selbst.

Mehr Infos findest du dort:
What are Webapps?
Safari Dev Center
Verzeichnis mit tausenden Webapps

Wozu sollte es denn auf Objective-C zugreifen oder darin umgewandelt werden? Schau dir mal Dinge wie 280slides, Google Docs, Chrome Web Store, Chrome OS oder eben iPhone WebApps an, dann weißt du, wozu HTML und Java Script in der Lage ist! ;)
 

Blain

Aktives Mitglied
Thread Starter
Registriert
06.07.2006
Beiträge
1.526
Hallo,

also ich habe jetzt natürlich noch nicht in der kurzen Zeit deine ganzen Links durchgelesen, aber ich denke dass es doch etwas mehr als eine Webapplikation ist. In meiner Nimblekit-Applikation nutze ich die Frameworks UIKit, Eventkit und EventkitUI. Davon gibt's beispielsweise eine Klasse welche zur Erzeugung von Kalenderevents verwendet wird und auch in meiner Applikation ein paar Obj-C Objekte instanziert. Diese spreche ich dann über JavaScript an... In meiner Applikation kommen ausserdem auch Objekte (z.B. Tab-Bar oder Title-Bar) aus dem UIKit framework vor. Somit dürfte es vom Funktionsumfang her nicht mit Webapplikationen in eine Kiste geworfen werden.

Aber wie gesagt, die Funktionsweise ist von mit eine Vermutung. Eine Technische Beschreibung wie es genau funktioniert gibt es leider nicht. Lediglich eine etwas einfach gehaltene Klassendokumentation.

Grüße
Blain
 

below

Aktives Mitglied
Registriert
15.03.2004
Beiträge
13.564
Es stellt halt eine Brücke, zwischen JavaScript und Objective-C her. Das ist nicht so schwierig.

Alex
 

nsc

Mitglied
Registriert
08.02.2007
Beiträge
256
Hi, ich habe beim googlen den Thread hier gefunden.

Ich fragte mich, wie NimbleKit es schafft, dass Projekte nur im Simulator ausgeführt werden können
und nicht auf dem Gerät (mit Apple Developer Zertifikat) getestet werden können.

So heißt es auf der Website:
Once you're happy with your app, purchase NimbleKit to test on your iDevice...

Ich habe es noch nicht ausprobiert, aber ich frage mich was dem kostenlosen NimbleKit "fehlt" dass das Testen auf einem echten Gerät nur mit der bezahlten Version funktionieren soll? Kann es sein dass es geht aber dann ein Lizenzverstoß wäre?
 

below

Aktives Mitglied
Registriert
15.03.2004
Beiträge
13.564
Wenn NimbleKit nicht im Sourcecode kommt ist das ganz leicht

Alex
 

nsc

Mitglied
Registriert
08.02.2007
Beiträge
256
Den Sourcecode hat man ja, sonst könnte man die Applikation nicht im Simulator ausführen.

Hier habe ich die Lösung gefunden:
In addition to needing a valid Distribution Provisioning Profile for your app, you’ll need a licensed
version of NimbleKit. At the time of this writing, a NimbleKit license requires a one-time fee of $99.
After purchasing the license, you’ll receive a 16-digit serial number.
After receiving the number, go to the Classes folder in your app’s project. Yes, as previously
mentioned, this is one of the areas that is normally off-limits to you. But this is one time you’re
allowed to go here. Open the folder, then double-click the AppDelegate.m file. You’ll see a bunch
of Objective-C code that you would normally not touch.
Look for this line of code:
Nimble *nimble = [[Nimble alloc] initWithRootPage:@”main.html”
window:window serial:@””];
Copy and paste your NimbleKit serial number between the double quotes, so you see this (only the
Xs below represent your actual serial number):
Nimble *nimble = [[Nimble alloc] initWithRootPage:@”main.html”
window:window serial:@”XXXX-XXXX-XXXX-XXXX”];
Then save, exit, and do not tamper with an Objective-C file again. You are now licensed to use
NimbleKit and distribute NK-based apps to iTunes!
 
Oben