从extern“C”调用objective-c方法

时间:2015-07-18 11:42:51

标签: ios objective-c plugins unity3d

我有一个temp.mm类,其中包含测试类和实现的实现。 extern“C”级。我试图在extern“c”类(即testMethod& testMethod1)中调用objective-c方法。 如何在extern“C”类函数中调用objective-c方法?。

我是Objective-c

的新手

我提到下面的示例代码..

import<test.h>
@implement test

-(void)testMethod
{
//code
}

-(NSString*)testMethod1:(NSString *)value
{
   //code
   return value;
}

void callMethod()
{
   how to call testMethod & testMethod1 in this also?
}

@end

extern "C"
{
how to call testMethod & testMethod1?
}

2 个答案:

答案 0 :(得分:1)

C代码部分是(并且必须)在您的类实现之外,因此您必须创建一个test的对象,然后调用它的方法,如下所示:

void callMethod() 
{
    test *test = [[test alloc] init];
    [test testMethod];

    const char *yourCString = "yourCString";
    [test testMethod1:[NSString stringWithCString:yourCString encoding:NSUTF8StringEncoding]];
}

在实现(extern "C".m文件)中不需要.mm部分,当您在标题(.h文件)中只需要它时想把它们标记为“普通的旧c代码”(不是C ++)。

请参阅:Is it required to add 'extern C' in source file also?

答案 1 :(得分:-1)

也在最初调用方法..... 使用: [自我测试方法]; [self testmethod1]; 如果你想将这个方法继承到另一个类,只需导入.m文件。