SORU
6 Mayıs 2011, Cuma


Objective-C nil, NİL, null arasındaki fark

nil, NIL nullarasındaki farkı bilmek istiyorum. Google'da etrafında ve bunu buldum:

nil ->Objective-C nesne null işaretçi

NIL ->Objective-C sınıfı null işaretçi

null ->null ilkel türü veya veri olmaması için işaretçi

Ama şartlar "Objective-C" ve "sınıf" açıkça. nesneyi anlamak mümkün değil ben

Bana bunu açıkla lütfen. Ayrıca, Objective-C NSNull NSNil gibi herhangi bir kelime var mı? Eğer öyleyse, o zaman ne olduğunu açıkla lütfen.

CEVAP
6 Mayıs 2011, Cuma


nil Objective-C nesneleri için null edebi değeri, soyut tip id veya Objective-C herhangi bir tür @interface ilan ile ilgili. Örneğin:

NSString *someString = nil;
NSURL *someURL = nil;
id someObject = nil;

if (anotherObject == nil) // do something

Nil Objective-C sınıfları için değişmez null değer türü Class denk düşer. Birçok kod referans sınıflar için değişkenleri gerekmez beri, kullanımı yaygın değildir. Bir örnek:

Class someClass = Nil;
Class anotherClass = [NSString class];

NULL keyfi C işaretçileri için değişmez null değerdir. Örneğin,

int *pointerToInt = NULL;
char *pointerToChar = NULL;
struct TreeNode *rootNode = NULL;

NSNull null temsil eden nesneler için bir sınıftır. Aslında, yalnızca bir nesne, yani bir [NSNull null] tarafından döndürülen var. nil edebi bir null değer olduğundan nil farklıdır, yani, bir nesne değil. Diğer yandan NSNull, tek örneği uygun bir nesnedir.

NSNull sık sık edemezler nil değerleri saklamak Vakfı koleksiyonları kullanılır. Sözlükler nil verilen anahtar sözlükte karşılık gelen nesne olduğunu belirtmek için verir durumda, yani, anahtar sözlüğe eklenmemiş. Belirli bir anahtar olduğunu açıkça yapmak istiyorum ama bir değeri yok, [NSNull null] kullanabilirsiniz.

Örneğin, aşağıdaki nil depolayamaz değerleri sözlükler, çünkü bir özel durum atar:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];

Diğer taraftan, aşağıdaki kodu [NSNull null] sigaranil bir nesne olduğu için geçerlidir:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];

Listedeki öğelerin sayısını belirtmek zorunda kalmadan Vakfı koleksiyonları nesnelerin listesini sonu için bir belirteç olarak nil kullanan initialisers olduğunu belirtmekte yarar var. Bu sadece nil Vakıf koleksiyonunda saklanan olamaz, çünkü olabilir. Örneğin,

NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];

NIL NSNil, Objective-C veya Apple Foundation diye bir şey yok.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Orson Wang

    Orson Wang

    28 EKİM 2006
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012
  • TheScorpioTechno

    TheScorpioTe

    15 Aralık 2010