Junior — Middle
Jaký je rozdíl mezi Nil a Null v kontextu programování?
sobes.tech AI
Odpověď od AI
V kontextu programování, zejména v iOS a Objective-C, mají Nil a Null odlišné významy:
-
Nil: je ukazatel na objekt, který je roven nule (null pointer) pro objekty Objective-C. Používá se k označení nepřítomnosti objektu (například,
NSObject *obj = Nil;). -
NULL: je makro označující nulový ukazatel pro běžné ukazatele na C struktury nebo primitivní typy (například,
int *ptr = NULL;). -
NSNull: je speciální objekt v Foundation, který se používá k reprezentaci null hodnoty v kolekcích (například v
NSArrayneboNSDictionary), protože ty nemohou obsahovatnil.
Příklad:
NSObject *obj = Nil; // žádný objekt
int *ptr = NULL; // žádná adresa
NSArray *array = @[[NSNull null]]; // objekt označující null uvnitř pole
Proto je Nil nulový ukazatel pro objekty Objective-C, NULL pro běžné ukazatele a NSNull je zástupný objekt pro reprezentaci null v kolekcích.