Pregunta

Siendo un desarrollador PHP bastante experimentado, y con un buen conocimiento de C (escribí un experimento de computación distribuida con 16 de los microcontroladores NEC de mi papá), me gustaría hacer el cambio a Objective-C y Cocoa, con el objetivo final de integrar las aplicaciones de Mac / iPhone con algunos de mis proyectos PHP.

Pasando por la "Programación de Cocoa para Mac OS X" Libro de Arron Hiilegass, me estoy frustrando un poco. Soy capaz de trabajar con los ejemplos, pero no explica exactamente por qué está usando una clase de esa manera (NSNumber en lugar de int o double por ejemplo).

Estoy buscando un buen libro / libros para apoyarme primero en Objective-C. Mi pregunta es, ¿cuál sería un buen libro? Estoy mirando a " Programación en Objective-C 2.0 " y se ve bastante decente. ¿A dónde iría desde allí? Estoy pensando que debería volver a empezar en mi libro de cacao.

Además, ¿hay recursos en Internet que ayuden en la transición de PHP a Objective-C? Sé que PHP es un lenguaje de secuencias de comandos vagamente escrito, por lo que tiene sus diferencias. Hay algunas cosas que simplemente no tienen sentido con Obj-C y Cocoa, ¿por qué no puedo poner números enteros en un NSMutableArray?

De todos modos. ¡Gracias por la ayuda! (Solo tengo 14 años, así que no me molestes si cometí algún error en mi Q.)

¿Fue útil?

Solución

Acabo de ver " Programación en Objective-C 2.0 " Yo mismo, y es bastante bueno. Lo recomendaría, especialmente si nunca has usado C (o si lo has olvidado, como yo).

Sin embargo, Apple realmente tiene una excelente documentación. Si no te importa leer en línea, comenzaría con su Página de inicio de Cocoa .

Otros consejos

Soy capaz de trabajar con los ejemplos, pero no explica exactamente por qué está usando una clase de esa manera (NSNumber en lugar de int o double por ejemplo) ...

Hay algunas cosas que simplemente no tienen sentido con Obj-C y Cocoa, ¿por qué no puedo poner números enteros en un NSMutableArray?

NSNumber es un tipo mucho más útil que un tipo primitivo como int o double , ya que se usa a menudo junto con otros objetos con los que se encontrará al programar en Cocoa.

Por ejemplo, para empaquetar un número como valor en una matriz redimensionable (como un NSMutableArray ) o una matriz asociativa (una instancia de NSDictionary ), debe convertir la primitiva numérica ( int , doble , etc.) en serializable , u objeto archivable & # 8212; un NSNumber .

Las primitivas no pueden ser serializadas, a diferencia de un NSNumber , porque las primitivas no están en el conjunto básico de " Core Foundation " tipos ( NSNumber , NSArray , NSString , etc.) que Apple ha trabajado arduamente para poner a su disposición.

Además, al utilizar NSNumber también obtiene muchos métodos adicionales de conveniencia gratis: puede convertir rápidamente el número en una cadena, por ejemplo, simplemente escribiendo [myNumber stringValue] .

O, si trata a su NSNumber como el precio de algo (" $ 1.23 "), puede aplicar un NSNumberFormatter a asegúrese de que las operaciones en el número den resultados que tengan el formato que esperaría (por ejemplo, si agrega dos valores de precio, esperaría obtener un valor de moneda a cambio).

Eso no quiere decir que no pueda o no deba usar las variables int o double . Pero en muchos casos, encontrará que NSNumber es una mejor opción, ya que puede escribir menos código y obtener una gran cantidad de funciones para " gratis " ;.

En mi experiencia, he encontrado que los documentos de Internet son lo suficientemente útiles para aprender Obj-C y CocoaTouch. Mi progresión fue algo como esto:

1) Mira los videos de Apple Dev en iTunes (son gratuitos).

2) Lea Getting Started , Guía de programación de aplicaciones para iPhone .

3) Lea .

4) Lea más: Cocoa Fundamentales , Objective-C Primer , Prácticas de cacao .

5) Haz algunos tutoriales simples.

IMO: Toda la información que necesita está en el sitio de Apple Dev: iPhone. Ahorra tu dinero y no compres libros. Si no entiendes " POR QUÉ " algo se hace en una de las guías o tutoriales, cotejelo inmediatamente con otras fuentes de Google.

Debes tener en cuenta que la curva de aprendizaje aquí es bastante grande. Fue para mí y estoy estudiando cosas como esta todos los días en la universidad. Entonces, quédate con eso y lee de manera inteligente (lee cosas que ya sabes). Lo que veo en mí mismo es que si entiendo cómo funciona el iPhone y si conozco el flujo de datos, entonces la programación es principalmente un problema de sintaxis.

PHP es muy diferente de Objective-C. Además, la forma en que se resuelven los problemas de programación en PHP en el contexto de Internet es muy diferente de la forma en que se resuelven los problemas de programación en Obj-C, en el contexto del iPhone. Debido a esto, desea acercarse al iPhone desde una nueva perspectiva, y como estudiante / aprendiz. Tómese su tiempo y concéntrese en la programación orientada a objetos y las mejores prácticas. Esto te bendecirá en los próximos años.

-Buffalo

También, para responder a sus preguntas:

Objective-C es un lenguaje orientado a objetos construido como una extensión en la parte superior de C.

Como tal, proporciona tanto tipos primitivos (como int y double) como objetos.

NSNumber es una clase de Objective-C que representa un número MÁS un número de operaciones en ese número (métodos). La ventaja de usar un NSNumber sobre un tipo primitivo numérico es que se puede usar de forma orientada a objetos (puede enviarle mensajes, puede ampliar su funcionalidad con "protocolos", puede heredar de él, puede páselo en un método que espere un objeto, etc.).

En cuanto a NSMutableArray, esta es una clase que proporciona una funcionalidad similar a una matriz. Está diseñado para funcionar con tipos de objetos Objective-C (es un contenedor de objetos de tipo NSObject y objetos que heredan de ellos) y esta es la razón por la que no puede contener un número entero. Sin embargo, puede contener un NSInteger que es una clase de objetivo-C que representa un número entero.

Personalmente intentaría aprender primero Objective-C a partir de las referencias de Apple en http: // developer.apple.com/library/mac/navigation/ y continuar con el cacao desde allí.

Estaba en un barco similar (PHP moviéndose a Objective-C) y encontré que el mejor proceso fue saltar a un proyecto. También revisé el libro de Hillegass y fue un buen comienzo, pero la única forma de conocer un idioma es simplemente salir adelante con un objetivo claro.

Es doloroso pero funciona. Café, APIs y kleenex.

EDITAR: Acabo de leer la última parte de tu publicación y vi que tenías 14 años. Quizás cambies el café con Coca Cola :)

Mi tutorial favorito de Objective-C, si vienes de cualquier lugar, es el curso de iTunesU de Stanford en la programación de iOS. El profesor realmente pone las cosas en perspectiva de los otros libros y tutoriales en línea.

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