¿Cuál es la diferencia entre nil y Nil y NULL?
NULL es en realidad un uso en C\C++, lo que significa que el puntero del objeto no apunta a ningún objeto y su valor es 0. Se produce una excepción cuando se utiliza un puntero de objeto nulo para llamar a un método o acceder a una variable miembro en el objeto.
2.nil y Nil representan objetos diferentes.
¿Cero? ->Puntero nulo a la clase Objective-C
¿Cero? Específicamente para un objeto de tipo clase que representa Objeto-C, es NULL, lo que significa que su puntero de objeto no apunta a ningún objeto.
¿Cero? ->Puntero nulo al objeto Objective-c
¿Cero? En particular, es NULL para objetos que no representan tipos de clase en Object-C, lo que significa que su puntero de objeto no apunta a ningún objeto. NSArray tiene terminación en cero.
Debido a que nil tiene un significado especial en NSArray y NSDictionary (que indica el final de la lista), los valores nil no se pueden colocar en colecciones. Si realmente necesita almacenar un valor que represente "nada", puede usar la clase NSNull.
3. Cuando no se pueda utilizar nil, utilice NSNull.
Nsnnull es una clase con un solo método: +(NSNull *)null
[NSNull null] se usa para agregar valores nulos distintos de nil (que representan listas). ) hasta el final de NSArray y NSDictionary). [NSNull null] es un objeto que se usa para expresar nulo y se usa cuando no se puede usar nil.
Datos extendidos:
Nil y nil pueden entenderse simplemente como la representación vacía de Objective-c hecha por el propio Object-C, que se utiliza para indicar que un puntero de objeto no señalar cualquier objeto.
Pero ¿qué pasa cuando el puntero del objeto es cero? Al llamar a un método o acceder a una variable miembro en un objeto NIL o NIL, no se devolverá NO, no se generará ninguna excepción y el programa continuará ejecutándose.
El valor de retorno de un mensaje enviado a un objeto nulo depende del tipo de retorno de su método. Si el método de retorno devuelve un tipo de puntero (como un puntero de objeto), el valor de retorno es nulo, lo que significa que el mensaje se pasa de forma segura al objeto nulo; nil solo se usa para la entrega. Si el método de retorno devuelve un int cuya longitud es igual o menor que el tipo de puntero, el valor de retorno es cero. Si el valor de retorno es una estructura o tipo de punto flotante, obtendrá un resultado indefinido.