为什么函数在Obj-C中使用 - (void)而不是 - (nil)?

时间:2011-03-27 12:42:26

标签: objective-c user-defined-functions

在objective-C中,我经常看到不返回声明为:

的任何函数
 - (void)myFunction {…

但为什么不使用nil声明函数,比如

 - (nil)myFunction {…

难道他们都不回“没有”吗?

3 个答案:

答案 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是一个对象,而不是一个类型。它代表一个空值。