-2

如果我有:

测试.c

int test_func(){


        }

我想做:

测试.m

[self test_func]

我的.h文件应该如何设置test.c。我在这里看到了这样一个问题的答案,但我没有给它添加书签,我无法追踪它。它涉及.h带有extern命令的文件。任何帮助,将不胜感激。

4

1 回答 1

1

可以以test_func特殊方式声明并使用各种 Objective-C 运行时 API 函数将该方法实现“附加”到类的方法列表中,但最简单的方法是:

测试函数.h

#ifndef TESTFUNC_H
#define TESTFUNC_H

int test_func();

#endif

测试函数.c

#include "testfunc.h"

int test_func()
{
    return 4;
}

测试类.h

#import <Foundation/Foundation.h>

@interface TestClass : NSObject
- (int) test_func;
@end

测试类.m

#import "TestClass.h"
#import "testfunc.h"

@implementation TestClass

- (int) test_func
{
    return test_func();
}

@end

如果您仍然热衷于尝试在运行时添加方法,请查看以下链接:

  1. 动态运行时解析

  2. 使用运行时 API 方法class_addMethod

值得注意的是,对于像调用 C 函数这样微不足道的事情,为了可维护性和可读性,您应该避免动态方法注入/解析。除非您有未在问题中解释的不可告人的动机,否则请坚持使用 A 计划(简单路线)!

于 2013-07-15T01:30:32.900 回答