Obj-C函数声明需要分号吗?

时间:2011-10-24 22:14:13

标签: objective-c function

这很简单,但让我疯狂。

我正在尝试在Objective-C代码中实现一个简单的函数。当我写这篇文章时,

NSInteger Sort_Function(id id1, id id2, void *context) {

}

我得到一个错误,即在声明结束时预计会出现分号。但是,我在很多很多例子中都看到过这种语法。我怎么可能做错了?如果重要,这是一个iOS应用程序,该函数嵌套在if子句中。提前谢谢。

1 个答案:

答案 0 :(得分:6)

函数定义 - 您发布的这个片段 - “嵌套在if子句中”?不幸的是,这在C语言中是非法的(和扩展名为Obj-C) - 所有函数声明和定义都必须位于文件的顶层。 @implementation部分内部也是一个选项:

// Start of file

// Declaration or definition valid here
void my_func(void);    // Declaration
void my_other_func(void);
void my_third_func(void);

void my_func(void) {    // Definition
    return;
}

@implementation MyClass

// Definition also valid here
void my_other_func(void) {
    return;
}

- (void) myMethod {
    if( YES ){
        void my_third_func(void) {    // Invalid here
            return;
        }
    }
}

@end

您是否可能将函数语法与block syntax混淆?

// The caret indicates definition of a block, sort of an anonymous function
int (^myBlock)(int);
myBlock = ^int (int my_int) {
    return my_int;
};