Como desarrollador de Java que está leyendo la documentación de Objective-C 2.0 de Apple: me pregunto qué significa "enviando un mensaje a cero", y mucho menos cómo es realmente útil. Tomando un extracto de la documentación:Enviando un mensaje a cero en Objective-C
Hay varios patrones en Cocoa que aprovechan este hecho. El valor de regresar de un mensaje a nil también puede ser válido:
- Si el método devuelve un objeto, cualquier tipo de puntero, cualquier escalar número entero de tamaño inferior o igual a sizeof (void *), un flotador, un doble, un doble larga, o un largo tiempo, entonces un mensaje enviado a devuelve nil 0.
- Si el método devuelve una estructura, según la definición de la función de Mac OS X ABI Guía llamada a ser devuelto en registros, luego un mensaje enviado a cero devuelve 0.0 para cada campo en el estructura de datos. Otros tipos de datos struct no se rellenarán con ceros.
- Si el método devuelve algo que no sea el valor mencionado escribe que el valor de retorno de un mensaje enviado a cero no está definido.
¿Ha dejado Java mi cerebro incapaz de asimilar la explicación anterior? ¿O hay algo que me falta que lo haría tan claro como el vidrio?
Tengo la idea de mensajes/receptores en Objective-C, simplemente estoy confundido acerca de un receptor que resulta ser nil
.
¡También tenía un fondo de Java y estaba aterrorizado por esta característica agradable al principio, pero ahora la encuentro absolutamente ENCANTADORA !; –
Gracias, esa es una gran pregunta. ¿Has visto para ver los beneficios de eso? Me parece algo "no un error, una característica". Sigo recibiendo errores donde Java simplemente me daría una bofetada con una excepción, así que sabía dónde estaba el problema.No estoy contento de cambiar la excepción del puntero nulo para guardar una o dos líneas de código triviales aquí y allá. –