调用一个带有我不打算使用的完成处理程序的函数,我是使用 nil、NULL 还是其他什么?
Calling a function that takes a completion handler that I'm not going to use, do I use nil, NULL or something else?
当调用一个将完成处理程序作为其参数之一的方法时,如果我不打算使用它,那么使用什么参数是合适的?
例如
[self.navigationController dismissViewControllerAnimated:YES completion:NULL];
有很多 NULL 和 nil 之间差异的示例,我认为 NULL 是因为我认为完成处理程序更像是 C++ 的东西,而不是特定于 Objective-c,但我可能会咆哮错误的树。
我是使用 NULL、nil 还是其他什么?
编辑:
抱歉,我应该说得更清楚,我知道 nil 和 NULL 是等价的,并且惯例是将 nil 用于对象,将 NULL 用于指针。我想问更多有关我使用哪个完成处理程序的问题。
Apple 至少在他们的一些 Objective-C 文档中使用 NULL。这里是 an example。
有关 Objective-C 中 nil 与 NULL 的一般性讨论,请参阅 this SO。
我刚刚在 Obj-C 中使用 NULL 来匹配 Apple 的文档。在 Swift 中,使用 nil。
Xcode 有一个 "Jump to Definition" 功能可以用来回答这个问题。
从 nil
开始将我们带到 MacTypes.h
#define nil __DARWIN_NULL
从 __DARWIN_NULL
到 _types.h 我们有
#define __DARWIN_NULL ((void *)0)
从 NULL
开始,我们将到达 stddef.h
#define NULL ((void*)0)
所以nil
和NULL
是一回事。按照惯例,nil
用于对象,NULL
用于其他指针类型。
完成处理程序将 block
作为参数,并且 a block
is an Objective-C object 因此按照惯例,当不需要完成块时应使用 nil
。
当调用一个将完成处理程序作为其参数之一的方法时,如果我不打算使用它,那么使用什么参数是合适的? 例如
[self.navigationController dismissViewControllerAnimated:YES completion:NULL];
有很多 NULL 和 nil 之间差异的示例,我认为 NULL 是因为我认为完成处理程序更像是 C++ 的东西,而不是特定于 Objective-c,但我可能会咆哮错误的树。
我是使用 NULL、nil 还是其他什么?
编辑: 抱歉,我应该说得更清楚,我知道 nil 和 NULL 是等价的,并且惯例是将 nil 用于对象,将 NULL 用于指针。我想问更多有关我使用哪个完成处理程序的问题。
Apple 至少在他们的一些 Objective-C 文档中使用 NULL。这里是 an example。
有关 Objective-C 中 nil 与 NULL 的一般性讨论,请参阅 this SO。
我刚刚在 Obj-C 中使用 NULL 来匹配 Apple 的文档。在 Swift 中,使用 nil。
Xcode 有一个 "Jump to Definition" 功能可以用来回答这个问题。
从 nil
开始将我们带到 MacTypes.h
#define nil __DARWIN_NULL
从 __DARWIN_NULL
到 _types.h 我们有
#define __DARWIN_NULL ((void *)0)
从 NULL
开始,我们将到达 stddef.h
#define NULL ((void*)0)
所以nil
和NULL
是一回事。按照惯例,nil
用于对象,NULL
用于其他指针类型。
完成处理程序将 block
作为参数,并且 a block
is an Objective-C object 因此按照惯例,当不需要完成块时应使用 nil
。