Pregunta

Estoy utilizando Three20 para el iPhone y yo estoy tratando de cambiar la función de un método dentro de ella mediante el uso de una categoría de clase. Se compila bien, pero nunca llegar al punto de equilibrio en el mismo.

Estoy asumiendo una categoría de clase afecta a todas las instancias de la clase, por lo que no tendrá que volver a compilar la biblioteca estática para que funcione.

también sé que la clase que estoy usando para la categoría está siendo visto porque si añado una 'x' al final del nombre de la clase cuando interfaz y poner en práctica la categoría falla el compilador.

Cualquier orientación aquí es muy apreciada.

¿Fue útil?

Solución

Como se señala aquí , tendrá la opción -all_load que se fijará en Linker Otras banderas de su aplicación con el fin de tener categorías vincularse con las librerías estáticas en el iPhone OS 3.0. -ObjC debe hacer el truco así, pero no está trabajando en el SDK actual. A partir del compilador LLVM en Xcode 4.2, se corrigió el problema que impedía que el enlazador varios Flag Enlazador de -ObjC funcione correctamente, por lo ya no es necesario utilizar -all_load (que tiene algunos efectos secundarios desagradables). -ObjC debería ser todo lo que necesita para obtener categorías para ser tirado desde su biblioteca estática.

Esto podría estar contribuyendo a su problema, aunque creo Three20 requiere esas banderas de engarce que se fijará para que vincular correctamente con su aplicación, en primer lugar, por lo que puede que ya tenga estas banderas en su lugar.

Otros consejos

Cuando dos categorías anulan el mismo método en la misma clase en la misma binaria, no se define que override tendrá prioridad. Para obtener los mejores resultados, cree una subclase y luego reemplazar el método en eso. Como alternativa, ya que tiene licencia Apache-Three20, usted puede hacer su cambio en la propia biblioteca.

Tengo un proyecto que se está ligando a una biblioteca estática y sí se requiere la bandera -all_load cuando se instala en el dispositivo con el SDK 3.0. -ObjC era todo lo que necesitaba para el simulador.

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