在objective-C中,我经常看到不返回声明为:
的任何函数 - (void)myFunction {…
但为什么不使用nil
声明函数,比如
- (nil)myFunction {…
难道他们都不回“没有”吗?
答案 0 :(得分:6)
void
没什么。 nil
是(0)。
换句话说,返回nil与不返回任何内容不同。
答案 1 :(得分:2)
历史上,语法属于(语法上)类似于C语言的系列, void 表示没有从函数返回的类型。
更准确地说,就像变量具有(或属于)给定的类型一样,函数也有类型。例如,返回int的函数, int 类型函数或类型为 int 的函数。如果返回其他内容则相同。
如果函数没有返回任何内容 - 它什么都不返回 - 它属于什么类型?它没有类型, void 类型代表了这样的东西。
我不熟悉Objective C,但如果我理解正确,则nil是无类型 ID(或任何类型的id),几乎就像{{{}的内置实现一样。 3}}。
null 是一个(void *)类型,后者是一个无类型指针,它可以指向任何东西,就像在C和C ++中一样。
因此返回nil的函数意味着它的类型是任何类型的id。不知道这是否有意义。那么就在那时,(nil)myFunction
的类型与(void)myFunction
完全不同,因为前者有一种类型(任何类型?),而后者根本没有类型。
此外,nil是内置常量。返回nill就像是说你的函数返回一个特定的数字(例如(1)myFunction
)。这没有任何意义,是吗?
答案 2 :(得分:0)
Void是一种对象类型。无效意味着没有返回值 Nil是一个对象,而不是一个类型。它代表一个空值。