在Objective C中声明和使用C函数

Axe*_*xel 3 c objective-c

这一定非常简单,但我无法弄清楚如何做到这一点:我有一个C函数来监控当前的内存使用情况:

natural_t report_memory(void) {
    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                               TASK_BASIC_INFO,
                               (task_info_t)&info,
                               &size);
    if( kerr == KERN_SUCCESS ) {
        return info.resident_size;
    } else {
        NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想用它.我如何在.h中声明它?我在目标c方法中尝试了(对我而言):

natural_t report_memory(void);
Run Code Online (Sandbox Code Playgroud)

在代码中的某个地方调用它:

NSLog(@"Memory used: %u", rvC.report_memory());
Run Code Online (Sandbox Code Playgroud)

编译器抱怨error: called object is not a function.因此,我认为,声明在某种程度上是错误的.我尝试了几个选项,但我能得到的最好的是运行时错误......如何解决这个问题?

小智 8

rvC.report_memory()
Run Code Online (Sandbox Code Playgroud)

应该换成

report_memory()
Run Code Online (Sandbox Code Playgroud)

因为它是C函数.

  • @angrest C函数独立于类.只需在需要的地方调用`report_memory()`即可. (2认同)