Yanıtlar:
nilyalnızca idJava ve C ++ programcılarının bir nesneye işaretçi olarak düşündükleri yerine kullanılmalıdır. NULLNesne 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 *)0nilid
contextin türü observeValueForKeyPath:ofObject:change:context:olduğu için void *, bu, contextbir 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 NULLyerine 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:
niliçin ne kullanacağını söylüyor id.NULLiçin kullandığınızı söylüyor void *.0.Genellikle tür bildirilen dil ile eşleşen varyant kullanın .
NULLolduğu C equivalentbirnil ş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,
nilObjective-C tarzında kullanılır. burada NULLC tipi işaretçiler içindir ve yazılır (void *).