概述
从汇编角度来看:C函数也好OC方法也好,他们同样都是一个函数的地址。
区别:
C函数调用直接通过 函数名(参数)找到函数指针 直接执行函数地址,不需要考虑其他问题,只要定义好
OC 是属于类的方法,结构上多了一层封装性,要调方法必须要找到 类的地址然后再通过类的地址找到方法的地址,然后再执行函数地址。
那么:如何能够在C函数里面调用OC的方法呢?
答案就是:指定一个全局变量来保存类的地址,在通过类的地址找到类方法(函数)的地址调用。
1首先新建工程在加入一个ViewController
[java]
#import
//1
定义一个全局指针变量用于保存当前类的地址
MainController
@interface
@end
2在内部分别定义一个C函数和一个OC方法
[java]
//
定义一个
OC
方法
-(
void
)OCSayHi{
NSLog
(
@"hi"
);
}
//
定义一个
C
函数
void
CSayHi(){
//
让
C
函数执行
OC
中的
OCSayHi
方法
[
OCp
OCSayHi
];
}
3在ViewDidLoad中调用C函数并且将函数self赋予全局函数指针
[java]
-(
void
)viewDidLoad{
[
super
viewDidLoad
];
// Do anyadditional setup after loading the view.
//
函数指针指向自己
OCp
=
self
;
//
调用函数方法
CSayHi
();
}
运行结果如下:
2014-07-13 19:49:10.590C
函数使用
OC
的方法
[16750:60b] hi
成功得在函数中调用了OC的方
最后
以上就是知性画笔为你收集整理的C函数调用OC方法的全部内容,希望文章能够帮你解决C函数调用OC方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复