Question

J'ai un projet qui cible à la fois Mac OS X 10.4 et 10.5, où 10,5 est le kit de développement de base.

Certaines méthodes comme -[NSString stringByReplacingOccurrencesOfString:withString] ne sont pas disponibles en 10.4. Je pouvais mettre en œuvre la fonctionnalité à la main. Une autre option serait de mettre en œuvre la méthode comme une catégorie, mais qui altérerait la mise en œuvre 10.5 et c'est quelque chose que je voudrais éviter.

Alors, comment puis-je mettre ces méthodes 10.4 sans déconner en hausse de 10,5 et de telle sorte que je puisse prendre la mise en œuvre facilement quand je décide d'arrêter de soutenir 10.4?

Était-ce utile?

La solution

Je pense que vous devez utiliser +load et +initialize charger une méthode en cours d'exécution si la méthode n'existe pas déjà.

Autres conseils

if ([myString respondsToSelector: @selector(stringByReplacingOccurrencesOfString:withString:)])
{
  // 10.5 implementation
}
else
{
  // 10.4 implementation
}

Utilisez une catégorie, mais mettre une étiquette sur le nom de la méthode; par exemple, stringByReplacingOccurrencesOfString_TigerCompatible:. Dans la mise en œuvre, soit appeler la mise en œuvre de Leopard ou votre propre.

Quand vous allez Leopard uniquement, effectuez une recherche de projet pour « TigerCompatible », Brûlotin alors toutes ces méthodes et un étiquette tous leurs sites d'appel.

Mettre toute la mise en œuvre dans les catégories manquantes dans un paquet qui est chargé au démarrage en main () si vous travaillez sous Tiger.

Comment l'utilisation d'une macro préprocesseur C pour insérer les méthodes pertinentes si elle est en cours de construction pour 10,4? Peut-être essayer de faire quelque chose comme ça dans une catégorie, de sorte que ces méthodes qui n'existent pas sur 10.4 ne sont inclus que si elle est en cours de construction pour 10,4?

#if defined(MAC_OS_X_VERSION_10_4) && MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
// Put your implementations of the methods here
#endif

Avez-vous besoin de soutenir 10.4? Si vous utilisez 10,5 méthodes que dans les parties essentielles de votre application, alors il pourrait être temps d'envisager d'aller 10,5 seulement.

Quoi qu'il en soit, avec l'exemple spécifique donnée ci-dessus, je vous suggère de se éloigner de cela et faire une copie mutable de votre chaîne afin que vous puissiez utiliser la méthode similaire sur NSMutableString qui fonctionne dans 10.4

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top