C ファイルと Objective C ファイルがあります。
つまり、C ファイルは :CB.m
であり、CB.h
CB.m
ac 関数 : が含まれていますcallIncomings()
。この関数はコールバック関数であるため、C 関数である必要があります。(署名は変更できません)
Objective 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()
が表示されません。
アイデアはなぜですか??
EDIT:また、C関数を一般化し、ABCD.viewまたはIncomingCallビューなどの別のビューをロードしたい場合、この関数を一般化するにはどうすればよいか知りたいと思いました。
EDIT 2:この質問はここから継続することができます:目的のC関数を呼び出すC関数
いくつかの明確化: viewcontroller.m ファイルに callIncoming 関数を入れると、正常に機能しました。しかし、今は別のファイル、つまり CB.m ファイルに別々に配置したいと考えています。
これで、varViewController に関する疑問に答えます。DemoCall 関数は ViewController ファイルにあります。これが IBAction であることに気付いた場合、そうです。関数 IncomingCall が確実に呼び出されています。
入力 : はい、誰かが指摘したように、varViewController は NULL のようです。それで??!!どこが間違っていますか?? .