Pregunta

Tengo un proyecto que se dirige tanto para Mac OS X 10.4 y 10.5, 10.5, donde es el SDK de base.

Algunos métodos como -[NSString stringByReplacingOccurrencesOfString:withString] no están disponibles en 10.4. Tan sólo pudiera implementar la funcionalidad con la mano. Otra opción sería la de poner en práctica el método como una categoría, pero que ensuciaría con la implementación 10.5 y eso es algo que me gustaría evitar.

Entonces, ¿cómo puedo aplicar tales métodos en 10.4 sin estropear 10.5 y de tal manera que puedo llevar a cabo la puesta en práctica fácilmente cuando decido dejar de apoyar a 10,4?

¿Fue útil?

Solución

Yo creo que hay que utilizar +load y +initialize para cargar un método en tiempo de ejecución si ya no existe el método.

Otros consejos

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

Usar una categoría, pero puso una etiqueta en el nombre del método; por ejemplo, stringByReplacingOccurrencesOfString_TigerCompatible:. En la aplicación, o bien llamar a la aplicación de leopardo o en su propio.

Cuando vas Leopard-solamente, hace una búsqueda de proyectos para “TigerCompatible”, entonces Burninate todos esos métodos y etiqueta de la ONU todos sus sitios de llamadas.

Ponga toda la implementación falta en categorías en un paquete que se carga en el arranque en main () si se ejecuta bajo el tigre.

¿Cómo sobre el uso de una macro preprocesador C para insertar los métodos pertinentes si está siendo construido el 10,4? Tal vez trate de hacer algo como esto en una categoría, por lo que los métodos que no existen en 10.4 solamente se incluyen si se está construyendo el 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

¿Es necesario apoyar a 10,4? Si está utilizando 10,5 únicos métodos en las partes centrales de su aplicación, entonces puede ser tiempo para considerar ir 10.5 solamente.

De todos modos, con el ejemplo específico dado anteriormente, sugiero alejarse de eso y hacer una copia mutable de la cadena de esta manera puede utilizar un método similar en NSMutableString el que hace el trabajo en el 10,4

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top