Il n'y a pas de moyen facile de le faire en utilisant les contrôles d'interface utilisateur standard. AppKit et UIKit sont des animaux complètement différents. Même la base UIView et NSView sont très différentes dans la structure et la fonction. À ce niveau, vous ne verrez rien de ce qui pourrait être fait sur plusieurs plateformes. Cependant, certains éléments d'affichage peuvent être configurés pour fonctionner sur Mac et iOS avec un minimum de modifications. Core CALayers d'animation sont un tel élément, en ce qu'ils sont les mêmes sur Mac OS X et iOS. C'est pourquoi nous avons choisi de les utiliser comme base pour le framework Core Plot, qui utilise une base de code presque identique pour afficher des graphiques sur Mac et iOS. Il y a quelques choses spécifiques à la plateforme à modifier (comme le système de coordonnées inversé qu'un UIView applique à sa couche de support), mais la plus grande partie du code se traduira sur les deux plates-formes.
Vous avez mentionné l'écriture d'un jeu. Si vous utilisez OpenGL ES pour cela, une grande partie du code de rendu que vous écrivez fonctionnera également sur le Mac. Il y a quelques choses que vous devrez modifier, mais pour la plupart, OpenGL ES est un sous-ensemble de bureau OpenGL. Cependant, pour un simple jeu en 2D, je vous recommande de rester avec Core Animation à moins que vous n'atteigniez vraiment un mur de briques, en termes de performances, simplement parce que vous écrirez beaucoup moins de code.
Les éléments que j'ai mentionnés jusqu'ici ont tous été dans la partie Vue du modèle de conception Modèle-Vue-Contrôleur. Le code de votre contrôleur sera spécifique à l'application, mais vous pourrez peut-être faire en sorte que la majeure partie de cette plate-forme soit indépendante. Si vous utilisez un modèle simple, ou même un qui repose sur SQLite ou Core Data pour la persistance, cela devrait être trivial pour faire fonctionner Mac et iOS avec le même code.
Une application Mac et une application iOS (même entre les différents appareils iOS) auront un design de base très différent. Vous ne pouvez pas simplement faire du chausse-pied d'une plate-forme à une autre. Les jeux sont probablement plus portables que tout le reste, mais vous aurez toujours besoin de faire un travail personnalisé pour refléter les attributs uniques de chaque périphérique informatique.
J'ai un jeu simple que j'écris pour mon iPhone. J'aimerais pouvoir le jouer sur mon Mac sans lancer le simulateur SDK. – hotpaw2