我是靠谱客的博主 知性画笔,最近开发中收集的这篇文章主要介绍C函数调用OC方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

从汇编角度来看: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 方法    
[
OCp OCSayHi ];
}


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方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部