Yanıtlar:
nil
yalnızca id
Java ve C ++ programcılarının bir nesneye işaretçi olarak düşündükleri yerine kullanılmalıdır. NULL
Nesne olmayan işaretçiler için kullanın .
Bu yöntemin beyanına bakın:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context
Bağlam bir void *
(yani bir C stili işaretçi) olduğundan , (tipte olan ) yerine kesinlikle NULL
(bazen olarak bildirilir ) kullanırsınız.(void *)0
nil
id
context
in türü observeValueForKeyPath:ofObject:change:context:
olduğu için void *
, bu, context
bir nesne işaretçisi olabileceği anlamına gelen bir veri değil mi? Bunun ortak bir durum olduğunu düşünürdüm. Ben dokümanlar hep kullanmak neden olarak karıştı sebebi bu NULL
yerine nil
.
Teknik olarak aynı şeydir (0), ancak nil genellikle bir Objective-C nesne türü için kullanılırken, NULL c-tarzı işaretçiler için kullanılır (void *).
Teknik olarak aynı şeydir ve sadece tarz olarak farklıdırlar:
nil
için ne kullanacağını söylüyor id
.NULL
için kullandığınızı söylüyor void *
.0
.Genellikle tür bildirilen dil ile eşleşen varyant kullanın .
NULL
olduğu C equivalent
birnil
şey bir işaretçi;
nerede nil is zero typed as id
,
NULL is zero typed as void*
.
Önemli bir nokta NULL'a mesaj gönderemezsiniz. Bu nedenle birçok yerde obj-C'de nil kullanılması tercih edilir.
Neredeyse aynı şeyler,
nil
Objective-C tarzında kullanılır. burada NULL
C tipi işaretçiler içindir ve yazılır (void *)
.