可以像在C中一样在ObjC中使用函数和函数指针吗?

时间:2015-02-10 19:12:44

标签: objective-c c function syntax

我熟悉C,现在正在学习Objective-C。

我经常使用函数指针

void (*callback)(int*restrict, char*restrict)

这可以在Objective-C中使用吗?特别是结构,如:

struct mytype myvar = {
    .first = myCallback;
    .second = myCallback2;
} 

另外,我希望有像

这样的函数原型
void function(int * restrict a, char * restrict b);
char * function (char * a);
...

使用这种风格没有问题吗?

2 个答案:

答案 0 :(得分:4)

Clang(Xcode使用的默认编译器)声称C11支持Objective C(参见Language Compatibility)。

这意味着函数指针,限制,结构和声明都将按预期工作。

一句忠告:不要与系统作斗争;它将为您自己创造更多的工作,为您的用户创建不太可靠的软件。程序员应该像水一样。

  

清空你的思想,变得没有形状,没有形状 - 就像水一样。现在你把水放进杯子里,它变成了杯子;你把水倒进一个瓶子就成了瓶子;你把它放在茶壶里它变成了茶壶。现在水可以流动,也可能会崩溃。是水,我的朋友。

- Bruce Lee

答案 1 :(得分:0)

您可以使用在Objective-C应用中选择的任何C策略。您仍然需要编写一些Objective-C才能启动UIApplication(或使用第三方工具为您执行此操作)。

但要记住的一件事是,int的长度会有所不同,具体取决于计算机,您应明确选择int32_tint16_tint8_t如果你真的不想使用抽象这种机器差异的NSInteger typedef