Ios 在objective-C中调用C函数消息传递样式
如果我有: 测试cIos 在objective-C中调用C函数消息传递样式,ios,objective-c,runtime,objective-c-runtime,Ios,Objective C,Runtime,Objective C Runtime,如果我有: 测试c int test_func(){ } 我想做: test.m [self test_func] 应如何针对test.c文件设置我的.h文件。 我在这里看到过这样一个问题的答案,但我没有将其添加到书签中,也无法找到它。它涉及一个带有extern命令的.h文件。任何帮助都将不胜感激。可以以特殊方式声明test\u func,并使用各种Objective-C运行时API函数将该方法实现“附加”到类的方法列表中,但最简单的方法是: testfunc.h te
int test_func(){
}
我想做:
test.m
[self test_func]
应如何针对test.c
文件设置我的.h
文件。
我在这里看到过这样一个问题的答案,但我没有将其添加到书签中,也无法找到它。它涉及一个带有
extern
命令的.h
文件。任何帮助都将不胜感激。可以以特殊方式声明test\u func
,并使用各种Objective-C运行时API函数将该方法实现“附加”到类的方法列表中,但最简单的方法是:
testfunc.h
testfunc.c
TestClass.h
如果您仍然希望尝试在运行时添加方法,请查看以下链接:
值得注意的是,对于像调用C函数这样的琐事,为了可维护性和可读性,您应该避免动态方法注入/解析。除非你有一个在你的问题中没有解释的别有用心的动机,否则坚持计划A(简单路线) 如果没有一些严重的偷工减料,你就无法做到这一点;除非您采取简单的方法,只需将
test\u func
作为调用test\u func()
函数的实例方法。这正是它应该如何实现的……在某些特殊情况下,test\u func()
可以以这样的方式定义(以及一些用于设置它的objc运行时调用),但你需要解释你要解决的问题。一般解决方案如@dreamlax所示。
#ifndef TESTFUNC_H
#define TESTFUNC_H
int test_func();
#endif
#include "testfunc.h"
int test_func()
{
return 4;
}
#import <Foundation/Foundation.h>
@interface TestClass : NSObject
- (int) test_func;
@end
#import "TestClass.h"
#import "testfunc.h"
@implementation TestClass
- (int) test_func
{
return test_func();
}
@end