Objective -C中的函数和方法之间是否存在显着差异?
答案 0 :(得分:71)
首先,我是Objective-C的初学者,但我可以说出我所知道的。
函数是与对象/类无关的代码块,只是从c继承而来,你可以这样调用它们:
// declaration
int fooFunction() {
return 0;
}
// call
int a;
a = fooFunction();
虽然方法附加到类/实例(对象),但您必须告诉类/对象执行它们:
// declaration
- (int)fooMethod {
return 0;
}
// call
int a;
a = [someObjectOfThisClass fooMethod];
答案 1 :(得分:5)
它更简单;方法只是一个C函数,前两个参数分别是方法调用的目标和被调用的选择器。
即。每个方法调用站点都可以重写为等效的C函数调用,但行为完全没有区别。
深入回答这里:Why [object doSomething] and not [*object doSomething]?从“回到语言的C预处理器根目录,你可以将每个方法调用转换为等效的C行”开始。