调用一个具有完成处理程序作为参数之一的方法时,如果我不打算使用它,什么是适当的参数?例如
[self.navigationController dismissViewControllerAnimated:YES completion:NULL];
有很多例子说明了零和零之间的差异,我认为零是零的,因为我认为完成处理程序更像是C 的东西,而不是Objective-C,但我可能会吠叫错误的树。/p>
我使用null,nil还是其他?
编辑:抱歉,我应该更加清楚,我知道零和空是等效的,并且将nil用于对象和指针的零是惯例。我在问更多有关完成处理程序的方法。
xcode具有可用于回答此问题的"跳转到定义"功能。
从nil
开始,将我们带到mactypes.h
#define nil __DARWIN_NULL
遵循 __DARWIN_NULL
to _types.h我们有
#define __DARWIN_NULL ((void *)0)
从NULL
开始,将我们带到stddef.h
#define NULL ((void*)0)
所以nil
和NULL
是同一件事。按照惯例,nil
用于对象,NULL
用于其他指针类型。
完成处理程序将block
作为参数,而block
是一个客观-C对象,因此,按照惯例,应在不需要完成块时使用nil
。
苹果在其至少某些Objective-C文档中使用null。这是一个例子。
有关Objective-C中零与零的一般讨论,请参阅此信息。
我刚刚在OBJ-C中使用NULL来匹配Apple的文档。在Swift中,使用NIL。