Objective-C中函数和方法的区别

26

在Objective-C中,函数和方法之间是否有显著的区别?


你是在问块、函数和方法之间的区别吗? - user457812
1
没有,我是在问“函数和方法之间有什么显著的区别吗?” - NCFUSN
2
好的,那么问题中的“blocks”内容是无关紧要的。 - user457812
2个回答

74

首先,我是Objective-C的初学者,但我能说出我所知道的。

函数是与对象/类无关的代码块,只是从C语言中继承下来的,您可以按照以下方式调用它们:

// declaration
int fooFunction() {
    return 0;
}

// call
int a;
a = fooFunction();

方法是附加在类/实例(对象)上的,您需要告诉类/对象执行它们:

// declaration
- (int)fooMethod {
    return 0;
}

// call
int a;
a = [someObjectOfThisClass fooMethod];

@MByD,这里只是一个小细节,Python确实有函数和方法。 - Firoze Lafeer
如何调用在其他类中定义的函数? - meteors

6
这很简单; 一个方法只是一个带有第一个和第二个参数的C函数,分别是被调用的方法和选择器。 每个单独的方法调用点都可以重写为等效的C函数调用,而行为完全没有区别。
深入回答请参阅此处:为什么是[object doSomething]而不是[*object doSomething] 从说“回到语言的C预处理器根源,您可以将每个方法调用转换为相应的C行”开始。

有趣,你能展示一下它的例子,并说明在哪个步骤中将其转换为简单的函数调用吗?此外,你可以指引我一些相关资料吗? - MByD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接