¿Cuánto conocimiento de C / C ++ se necesita para el desarrollo de Objective-C / iPhone?

8

Primero, un poco de historia. Soy un desarrollador .Net (C #) y tengo más de 5 años de experiencia tanto en desarrollo web como en aplicaciones de escritorio. Llevo un tiempo queriendo estudiar el desarrollo de iPhone, pero por una razón u otra siempre me han desviado. Finalmente tengo un proyecto potencial en el horizonte, y ahora voy a toda máquina aprendiendo esto.

Mi pregunta es esta: no he hecho ninguna programación C / C ++ desde mis días de escuela, he estado viviendo en tierras administradas desde entonces. ¿Cuánto conocimiento, si es necesario, se necesita para tener éxito como desarrollador de iOS? Obviamente, la administración de memoria es algo de lo que tendré que ser consciente (aunque con iOS 5 parece haber algo llamado ARC que debería hacerme la vida más fácil), pero ¿qué más? No solo estoy hablando de la API C (por ejemplo, para obtener el pecado de un número, llamo la función sin ()), para eso es Google. Estoy hablando de modismos fundamentales de C / C ++ que el desarrollador promedio de C # desconoce.

BFree
fuente
2
¿Por qué esto tiene algo que ver con C ++?
sdg
Por lo que he leído, hay muchas API con las que interactúan los desarrolladores de iOS que están escritas en C ++. ¿No es eso cierto?
BFree
C u Objetivo-C. No se requiere C ++.
Terry Wilcox
@BFree rara vez necesita usar C ++ para el desarrollo de iOS. A menos que esté haciendo algo que requiera bibliotecas específicas como OpenCV o Irrlicht, estará principalmente haciendo Objective-C. Cocoa Touch está escrito en Objective-C y es el conjunto de marcos de Apple que usarás principalmente.
derecha el

Respuestas:

7

No te preocupes por eso. Si conoce suficiente C para poder escribir llamadas a funciones, comprender y escribir expresiones aritméticas y lidiar con punteros, probablemente estará bien. Aún necesitará aprender Objective-C, por supuesto, pero gran parte del código que escribirá será más Objective-C que el viejo C. Acostumbrarse al estilo Objective-C y aprender Cocoa Touch consumirá mucho más. de tu tiempo que repasar C.

Por lo general, les digo a las personas que comienzan desde cero que aprendan C antes de saltar a Objective-C. Respaldo ese consejo: aprender C te enseñará los conocimientos básicos que necesitas para trabajar eficazmente en Objective-C. Debe saber qué es una función, cómo usar estructuras de control como bucles y sentencias condicionales, cómo funcionan los distintos tipos de datos básicos, qué es una estructura, etc. Y dado que todo C es un juego justo en Objective-C, cuanto más conozca C, mejor estará preparado para comprender el código que podría encontrar. Dicho esto, muchas tareas se realizan de manera diferente en Objective-C, por lo que los modismos estándar de C no son necesariamente modismos estándar de Objective-C. NSString y NSArray toman el lugar de las matrices de estilo C. Los punteros son omnipresentes, pero se usan principalmente para referirse a objetos: la aritmética de punteros no aparece con mucha frecuencia.

Lo mismo ocurre con C ++ ... no necesitará mucho C ++ para llevarse bien en Objective-C. En algún momento en el futuro, es posible que necesite aumentar su conocimiento de C ++ para integrar algo de código C ++ existente en una aplicación, y en ese punto es posible que deba dedicar algo de tiempo a aprender, pero no permita que la falta de conocimiento de C ++ se detenga intentas probar suerte en la programación de iOS.

Caleb
fuente
1

No es una respuesta completa, pero debe consultar este pdf si va a aprender Objective-C.

Es una lectura realmente fácil si te gusta leer para aprender idiomas, en lugar de mirar ejemplos de código o ejemplos. Siempre y cuando comprenda la POO, recoger el Obj-C es fácil. Lo que realmente me desanima de aprender el desarrollo del iPhone es el uso de Xcode, que es otra historia ...

Apple Obj-C

Trevor Arjeski
fuente
0

Depende

Un subconjunto de lenguaje de programación (a veces llamado "las partes buenas") generalmente funciona bien si sus objetivos no superan los límites de ese subconjunto.

Si desea hacer cosas simples de la interfaz de usuario (lo que podría hacer en una aplicación web), seguir con los tipos de datos de Cocoa y Foundation, y escribir código libre de errores, probablemente podría obtener al saber muy poco de la C debajo del Objetivo C .

Sin embargo, si desea realizar el procesamiento o análisis de audio, video, imagen (etc.) de iOS, las API y el código de ejemplo de referencia con el que probablemente trabajará están principalmente en C y son idiomáticos en C.

Pero el objetivo C es un superconjunto estricto de C, por lo que los errores tipográficos y los errores pueden manifestarse en cualquier nivel del entorno del lenguaje. Si su código tiene errores, entonces es posible que necesite conocer a fondo el puntero C, el tipo de datos y el nivel de almacenamiento dinámico para analizar un bloqueo y depurarlo. El objetivo C no se "gestiona" y, por lo tanto, uno puede crear un desorden retorcido en la memoria, ya sea con un propósito o como un accidente completo.

hotpaw2
fuente