Frage

Ich habe ein Projekt, das sowohl Mac OS zielt X 10.4 und 10.5, wobei 10.5 ist die Basis SDK.

Einige Methoden wie -[NSString stringByReplacingOccurrencesOfString:withString] sind in 10.4 nicht verfügbar. Ich konnte nur die Funktionalität von Hand implementieren. Eine andere Möglichkeit wäre es, die Methode als eine Kategorie zu implementieren, aber das würde Chaos mit 10,5 Implementierung und das ist etwas, Ich mag würde zu vermeiden.

So wie ich solche Methoden in 10.4 implementieren, ohne auf 10,5 Messing und so, dass ich einfach die Umsetzung herausnehmen kann, wenn ich aufhören entscheiden zu unterstützen 10.4?

War es hilfreich?

Lösung

Ich glaube, Sie verwenden müssen +load und +initialize eine Methode zur Laufzeit laden , wenn die Methode nicht existiert bereits.

Andere Tipps

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

Verwenden Sie eine Kategorie, sondern einen Tag auf dem Methodennamen setzen; zum Beispiel stringByReplacingOccurrencesOfString_TigerCompatible:. Bei der Implementierung, rufen Sie entweder Leopard-Implementierung oder Ihre eigene.

Wenn Sie gehen, Leopard-only, tun ein Projekt Suche nach „TigerCompatible“, dann Burninate alle diese Methoden und un-Tag alle ihre Call-Sites.

Setzen Sie die alles fehlende Umsetzung in Kategorien in einem Bündel, das beim Start in Haupt geladen wird (), wenn unter Tiger ausgeführt wird.

Wie wäre es mit einem C Präprozessormakro mit den entsprechenden Methoden einzusetzen, wenn es für 10.4 gebaut wird? Vielleicht in einer Kategorie so etwas wie dies versuchen zu tun, so dass diese Verfahren, die auf 10.4 enthalten sind nicht existieren nur, wenn es für 10.4 gebaut wird?

#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

Sie benötigen 10.4 zu unterstützen? Wenn Sie 10.5 nur Methoden in Kernteilen des App verwenden, dann könnte es Zeit nur gehen 10.5 zu berücksichtigen sein.

Wie auch immer, mit dem spezifischen oben gegebenen Beispiel, schlage ich weg, dass bewegte und eine veränderbare Kopie Ihrer Zeichenfolge zu machen, so dass Sie ein ähnliches Verfahren auf NSMutableString der Arbeit in 10.4 tut verwenden können

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top