C函数调用OC方法
来源:互联网 发布:淘宝对新店的扶持 编辑:程序博客网 时间:2024/05/16 09:40
从汇编角度来看:C函数也好OC方法也好,他们同样都是一个函数的地址。
区别:
C函数调用直接通过 函数名(参数)找到函数指针 直接执行函数地址,不需要考虑其他问题,只要定义好就能直接用.
OC 是属于类的方法,结构上多了一层封装性,要调方法必须要找到 类的地址然后再通过类的地址找到方法的地址,然后再执行函数地址。
那么:如何能够在C函数里面调用OC的方法呢?
答案就是:指定一个全局变量来保存类的地址,在通过类的地址找到类方法(函数)的地址调用。
1首先新建工程在加入一个ViewController定义一个全局指针指向self
[java] viewplaincopy
#import "MainController.h"
//1定义一个全局指针变量用于保存当前类的地址MainController*OCp = nil;
@interface MainController ()
@end
2在内部分别定义一个C函数和一个OC方法
[java] viewplaincopy
//定义一个OC方法-(void)OCSayHi{
NSLog(@"hi");
}
//定义一个C函数
void CSayHi(){
//让C函数执行OC中的OCSayHi方法
[ OCpOCSayHi];
}
3在ViewDidLoad中调用C函数并且将函数self赋予全局函数指针
[java] viewplaincopy
-(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的方法呢?
答案就是:指定一个全局变量来保存类的地址,在通过类的地址找到类方法(函数)的地址调用。
1首先新建工程在加入一个ViewController
[java]
#import
//1定义一个全局指针变量用于保存当前类的地址MainController
@interface
@end
2在内部分别定义一个C函数和一个OC方法
[java]
//定义一个OC方法-(void)OCSayHi{
NSLog(@"hi");
}
//定义一个C函数
void CSayHi(){
//让C函数执行OC中的OCSayHi方法
[
}
3在ViewDidLoad中调用C函数并且将函数self赋予全局函数指针
[java]
-(void)viewDidLoad{
[
OCp = self;
CSayHi();
}
运行结果如下:2014-07-13 19:49:10.590C函数使用OC的方法[16750:60b] hi
成功得在函数中调用了OC的方
0 0
- C函数调用OC方法
- C调用OC方法
- 在c的函数中调用oc的方法
- iOS 开发中C函数调用OC方法
- 使用OC调用C语言的函数
- C函数调用方法
- JS调用OC函数
- oc函数调用
- OC调用c/c++
- c 调用 oc
- OC与Swift调用函数方法格式对比
- 在JS函数中调用OC中的方法
- oc调用js方法
- Unity调用OC方法
- OC和C相互调用
- Swift调用OC和C
- C#调用C函数的方法
- MATLAB调用C/C++函数的方法
- 面 临 苍 老
- 让 爱 永 生
- 今夜,你会不会来?
- 现实与网络
- 聚散皆是缘
- C函数调用OC方法
- 牵挂
- 送你七束心香
- 亲爱的朋友,您幸福吗?
- 感 悟 人 性
- 朋友与缘分
- 爱一个人、、、
- 心痛
- 我决定开始改变自己