Je suis de retour à l'écriture du code de cacao, après ne rien faire, mais le travail de l'iPhone pour presque un an (Mars l'année dernière jusqu'à aujourd'hui). C'est un changement agréable, et en quelque sorte, les similitudes entre les deux près de rendre plus difficile pour mon cerveau de changer de vitesse. Je continue à essayer d'utiliser UIxxxxxx lieu de NSxxxxxx.
Quoi qu'il en soit, il peut y avoir des moments où vous voulez partager du code entre un Mac et un programme d'iPhone, et la plupart du temps, cela ne va pas être un problème. Cependant, il ya un peu pièges.
Tout d'abord, si vous utilisez le garbage collection sur le Mac (et vous devriez vraiment être à ce point, et au pire vous devriez faire l'interrupteur lorsque vous vous déplacez vers Snow Leopard), comment définissez-vous vos propriétés afin qu'ils travaillent dans les deux environnements? Voici une façon. Quelque part dans un fichier en-tête que tous vos fichiers seront # import, ajoutez ceci:
Maintenant, quand vous allez déclarer vos biens, faire comme cela:
Vos propriétés seront définies correctement dans les deux environnements. Assurez-vous que vous avez activé GC sur la cible Mac, cependant, ou vous aurez des problèmes. GC est toujours opt-in à ce point. Si vous n'allez pas utiliser GC, alors il n'ya pas besoin de faire cela.
Quoi qu'il en soit, il peut y avoir des moments où vous voulez partager du code entre un Mac et un programme d'iPhone, et la plupart du temps, cela ne va pas être un problème. Cependant, il ya un peu pièges.
Tout d'abord, si vous utilisez le garbage collection sur le Mac (et vous devriez vraiment être à ce point, et au pire vous devriez faire l'interrupteur lorsque vous vous déplacez vers Snow Leopard), comment définissez-vous vos propriétés afin qu'ils travaillent dans les deux environnements? Voici une façon. Quelque part dans un fichier en-tête que tous vos fichiers seront # import, ajoutez ceci:
#ifdef TARGET_OS_IPHONE
#define ASSIGN_OR_RETAIN retain
#else
#define ASSIGN_OR_RETAIN assign
#endif
Maintenant, quand vous allez déclarer vos biens, faire comme cela:
@property (nonatomic, ASSIGN_OR_RETAIN) NSString *name;Vos propriétés seront définies correctement dans les deux environnements. Assurez-vous que vous avez activé GC sur la cible Mac, cependant, ou vous aurez des problèmes. GC est toujours opt-in à ce point. Si vous n'allez pas utiliser GC, alors il n'ya pas besoin de faire cela.
Aucun commentaire:
Enregistrer un commentaire