C调用OC方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MIYIshi/article/details/68957624

从汇编角度来看:无论是C函数或者是OC方法,他们同样都是一个函数的地址。区别在于:C函数调用直接通过 函数名(参数)找到函数指针,直接执行函数地址,不需要考虑其他问题,只要定义好就能直接用.   OC 是属于类的方法,结构上多了一层封装性,要调方法必须要找到 类的地址然后再通过类的地址找到方法的地址,然后再执行函数地址。那么:如何能够在C函数里面调用OC的方法呢?答案就是:指定一个全局变量来保存类的地址,在通过类的地址找到类方法(函数)的地址调用。

新建一个xcode工程,我们在ViewController.m​文件中定义一个全局静态变量指针用于保存当前类的地址,如图:

​接着我们在viewDidLoad中将指针指向我们刚刚定义的静态变量,这样我们定义的MyView就相当于self。因为self指的是当前类的地址,而我们把类的地址给了全局的MyView,所以在C函数里使用MyView,就相当于在Oc的方法中使用self是一个道理。如图:

接着我们写一个oc的方法,如图:

然后我们再写一个C的函数:来调用我们刚刚的oc方法,如图:​

​最后我们在可以在viewDidLoad中掉用我们的C方法,我们就可以在控制台看到NSLog的输出语句了。

完美!

猜你喜欢

转载自blog.csdn.net/MIYIshi/article/details/68957624
今日推荐