¿Por qué no hay ningún cero en el diccionario?
Nil: un puntero nulo que apunta a un objeto en oc
nil: un puntero nulo que apunta a una clase en oc
NULL: un puntero nulo apuntando a otros tipos, por ejemplo, un puntero de memoria de tipo c.
NSNull: En un objeto de colección, un objeto que representa un valor nulo.
Si obj es cero:
[objmessage] devolverá NO en lugar de NSException.
Si obj es NSNull:
[objmessage] generará una excepción n excepción.
2,
Es relativamente sencillo entender Nil y NULL literalmente. nil es un objeto y NULL es un valor. Tengo entendido que nil establece el objeto en nulo y NULL establece el tipo primitivo en nulo. Además, cuando llamamos al método nil, no generamos un bloqueo ni lanzamos una excepción.
Ver uso
NSURL * url = nil
Clase class = Nil
int * pointerInt = NULL
Nil significa que el puntero de objeto está vacío, nil significa que el puntero de clase está vacío y NULL significa que el tipo de datos básico está vacío.
Estos cinco conceptos se confunden fácilmente, y en algunos casos tienen el mismo uso. Primero, explique el significado de "puntero nulo". Un puntero nulo significa que el puntero no apunta a un área de memoria significativa. Por ejemplo, int * p; int * p = NULL
objeto ns * obj 1 =[[objeto ns alloc]init];
objeto ns * obj 2 =[ns null null] ;
ns object * obj 3 =[ns object new];
NSObject * obj4
NSArray * arr 1 =[NSArray arrayWithObjects: obj 1 , obj2, obj3, obj4, nil];
NSLog (@"arr1 count: ld", [arr 1 count]); //count: 3 Debido a que obj=nil, la adición del objeto se completa cuando agregando obj4.
objeto ns * obj 1;
objeto ns * obj 2 =[[objeto ns alloc]init];
objeto ns * obj 3 =[ns null null];
ns object * obj 4 =[ns object new];
NSArray * arr 2 =[NSArray arrayWithObjects: obj 1, obj2, obj3, obj4, nil] ;
NSLog(@"arr2 count:ld",[arr 2 count]); //count: 0, debido a obj1=nil, los siguientes objetos no se agregan.
[NSNull null] normalmente actúa como marcador de posición, como se muestra a continuación:
ns object * obj 1 = [ns null null]
NSArray * arr; 1 = [NSArray arrayWithObjects: @"Uno", @"DOS", obj1, @"tres", nil];
for (ns string * str in arr 1) {
NSLog(@"array object:@",str);
}//Resultado: uno, dos, tres
objeto ns * obj 1 =[ns null null];
NSArray * arr 1 = [NSArray arrayWithObjects: @"Uno", @"DOS", obj1, @"tres", nil]
for (ns cadena * cadena en arr 1) {
if (str! = [ns null]) {
NSLog (@"Objeto de matriz: @", str);
}
}//Resultado: uno, dos, tres