我有一个 C 文件和一个 Objective C 文件。
即,C 文件是 :CB.m
并且CB.h
CB.m
包含 ac 函数 : callIncomings()
。这个函数必须是一个 C 函数,因为它是一个回调函数。(其签名不能更改)
目标 C 文件是ViewController.h/.xib/.m
和IncomingCall.h/.m/.xib
.
现在,我在 ViewController.h 中声明了以下内容
static ViewController* varViewController;
在 中viewDidLoad
,我分配:
varViewController = self;
我有以下代码CB.m
#include <stdio.h>
#import "ViewController.h"
#import "IncomingCall.h"
int callIncomings(int a, char* b)
{
IncomingCall *obj = [[IncomingCall alloc]initWithNibName:@"IncomingCall" bundle:nil];
//NSString *temp =
//NSString* string =
obj.tempAddress = [NSString stringWithFormat:@"%s" , b];
[obj setModalTransitionStyle:UIModalTransitionStylePartialCurl];
[varViewController presentModalViewController:obj animated:YES];
[obj release];
return 1;
}
此函数在以下位置调用:
- (IBAction)DemoCall:(id)sender {
callIncomings(1, "from C file");
}
该项目构建良好,但视图IncomingCall()
未显示。
任何想法为什么?
编辑:另外,我想知道,如果我想概括 C 函数并加载一些不同的视图,比如 ABCD.view 或 IncomingCall 视图,我该如何概括这个函数。
编辑 2:这个问题可以是从这里开始的连续性:C 函数调用目标 C 函数
一些澄清:当我将 callIncoming 函数放在 viewcontroller.m 文件中时,它工作正常。但现在我想将它单独放在另一个文件中,因此放在 CB.m 文件中。
这样就回答了您对 varViewController 的疑问。DemoCall 函数在 ViewController 文件中,如果您注意到它是 IBAction,那么是的,IncomingCall 函数肯定会被调用。
输入:是的,就像有人指出的那样,它是真的, varViewController 似乎是 NULL。怎么办??!!我哪里错了??.