Category: Cocoa

Resolviendo el error “literal-pointer@__OBJC@__cls” en XCode

Generalmente cuando uno es nuevo en el desarrollo de Mac empleado XCode/Cocoa se enfrenta a una seria de mensajes y errores poco comunes o que simplemente nunca habíamos visto. En un proyecto que estaba compilando en XCode casi al final de la compilación me salieron los siguientes errores:

“.objc_class_name_PTHotKey”, referenced from: literal-pointer@__OBJC@__cls_refs@PTHotKey in PomodoroController.o

“.objc_class_name_PTHotKeyCenter”, referenced from: literal-pointer@__OBJC@__cls_refs@PTHotKeyCenter in PomodoroController.o

ld: symbol(s) not found collect2: ld returned 1 exit status

simplemente WTF! parece una grosería del compilador!!

Después de pasar un muy buen rato investigando sobre este tipo de errores, que por equivocación se los atribuía al compilador, encontré en la ayuda de Apple y foros de que este error es ocasionado por el Linker al momento de ensamblar la aplicación y se debe a que en el código fuente se hace referencia a clases que no se encuentran incluidas en XCode, por ejemplo mediante #import, pero que probablemente físicamente existan en la ruta del proyecto pero no en XCode, por lo que no se encuentran los símbolos que requiere el Linker en el armado de la aplicación.

Por tanto la solución para esta situación es:

1. Agregar los archivos faltantes a XCode en la sección “Classes”.
2. En los “Targets” del proyecto agregar en “Compile Sources” los archivos faltantes agregado en el paso 1.
3. Aplicar un “Clean” / “Clean All Targets”.
4. Compilar la aplicación y listo!

Espero que este Tip sirva, ya que es poca la información que existe al respecto!

CocoaHeads México

Tal vez algunos conozcan el grupo de desarrollo cocoaheads el cual tiene como próposito principal discutir sobre temas relacionados con el framework de desarrollo de cocoa. No hace mucho se formo el grupo cocoaheads México por lo que para los que estan interesados en el desarrollo para Mac OSX y iPhone está es una muy buena opción para iniciarse.

Las fechas de las reuniones y lugar los pueden consultar en http://www.cocoaheads.org

Simplicidad

Ahora que me encuentro realizando mis primeros pasos con Cocoa y Objective-C para entrar de lleno al desarrollo para Mac OS X, el buen Norber me recomendo utilizar F-Script, para experimentar a fondo y sin tantos problemas todos el potencial de framework de Cocoa sobre Objective-C.


El titulo de este post tiene relación en un artículo en Fun Script (Blog dedicado a F-Script), en donde queda de forma clara y manifiesta la simplicidad de la programación y cuando otros “se impresionan” con ciertas nuevas tecnologías, muchas veces se deja de lado el hecho de que lo simple muchas veces es la mejor solución.


Para dejar de ejemplificado la anterior me permito extraer los ejemplos del articulo:

JAVA

TreeSet pilots = new TreeSet(new Comparator()
{
    public int compare(Object o1, Object o2)
    {
        if (((Pilot)o1).salary() < ((Pilot)o2).salary())
            return -1;
        else if (((Pilot)o1).salary() == ((Pilot)o2).salary())
            return 0;
        else
            return 1;
    }
});

for (flight : flights)
{
    if (flight.arrivalLocation().equals("PARIS") &&
        flight.airplane().model.equals("B747"))
    {
        pilots.add(flight.pilot());
    }
}

ArrayList result = new ArrayList();
for (pilot : pilots)
{
    result.add(pilot.name());
}



C# (LINQ)

var pilots = (from flight in flights
              where flight.arrivalLocation == "Paris" &&
                    flight.airplane.model == "B747"
              select flight.pilot).Distinct();

var result = from pilot in pilots
             orderby pilot.salary
             select pilot.name;



F-SCRIPT

pilots := (flights at:flights arrivalLocation = 'PARIS' &
          (flights airplane model = 'B747')) pilot distinct.
result := pilots name at:pilots salary sort.



Así de simple!.

WordPress Themes