Mavericks kommt heraus und für Entwickler, die immer beschäftigt mit all diesen neuen Funktionen und APIs zu wissen und zu verwenden ist. Für mich ist es der perfekte Zeitpunkt, um eine Frage zu stellen, die mich schon sehr lange nervt.Developing App für 10,8 + aber mit 10.9 SDK
Hier ist die Sache, im Kontext: Ich entwickle eine App, die ich auf 10.8 (so das Zielsystem ist 10.8+) laufen lassen möchte. Im Moment benutze ich das 10.8 SDK. Mit der Veröffentlichung von 10.9 kommt jedoch ein paar ziemlich süße APIs, die ich gerne in meiner App verwenden würde. Ich benutze sie in meinem Code, aber natürlich muss ich meine App gegen das 10.9 SDK kompilieren. Wenn ich das tue, kann ich noch die App auf 10.8 laufen lassen?
Oder, auf eine allgemeinere Art, wenn ich meine Anwendung gegen ein SDK kompiliere, kann ich es noch auf einem "niedrigeren" Mac OS laufen lassen? Wenn ja, können Sie erklären, wie es unter der Haube funktioniert (was macht der Compiler)? Das ist ein Geheimnis für mich.
Aber ich denke, es gibt Methoden eingeführt, zum Beispiel in 10.8, die auch auf 10.7 verfügbar sind. Wie kann ich vor dem Kompilieren wissen, ob die Methoden für jede Version des Betriebssystems verfügbar sind? – Alex
Das ist eine Übung für den Entwickler. Es gibt einige Tools, mit denen Leute SDK-Versionen überprüft haben, obwohl ich momentan Schwierigkeiten habe, ein Beispiel zu finden. Sie können immer versuchen, Ihren Code mit den anderen SDKs neu zu kompilieren und nicht von den Fehlern, die er generiert, zu machen, dann das SDK zurückzuschalten und sie zu umgehen. – gaige
Wenn das Implementierungsziel auf eine ältere Version festgelegt ist, werden die Frameworks, die nicht verfügbar waren, automatisch schwach verknüpft. Das heißt, wenn die App auf einer älteren Version ausgeführt wird, haben nicht verfügbare schwach verknüpfte Funktionen NULL-Funktionszeiger, nicht verfügbar. Schwache verknüpfte Klassennamen geben nil aus NSClassFromString zurück und nicht verfügbare schwach verknüpfte Methoden geben NO aus der anthisToSelector: -Methode des enthaltenden Objekts zurück . – geowar