OC和C语言互相调用

本文介绍了OC和C语言互相调用的注意事项,包括OC与C++对象内存管理的区别、通过指针桥接调用、以及clang根据文件后缀选择编译器。OC调用C语言可以直接使用函数指针,而C调用OC则需要通过全局变量保存类地址。将C文件改为.mm后缀并导入OC类,即可在C语言方法中使用OC语法。
摘要由CSDN通过智能技术生成

注意事项:

OC与C++对象在内存管理上是不一样的。所以我们无法直接将一个OC对象直接赋值给一个C++对象,或者相反。

OC与C++都支持指针,可以通过指针进行桥接。例如在一个C++类中声名一个OC的指针。

clang可以通过程序文件的后缀名选择不同的编译器对其进行编译。如文件后缀名是.m,它会使用OC编译器;如果是.mm,它会使用Object-C++编译器。

OC调用C语言:

//  方法一:c语言可以直接在OC的类中写方法:
- (void)playvideobtn{
 
   // 调用c语言方法:
    sayHello();
}
//。c语言方法:
void sayHello(){
    printf("Hello OC");
}


//。方法二:c语言单独的类文件,然后在oc类中#include后调用c语言方法:
// testtwo.h

#ifndef testtwo_h
#define testtwo_h

#include <stdio.h>
void sayHello();
#endif/* testtwo_h*/

// testtwo.m
#inclued "testtwo.h"
void sayHello() {
  printf("我是OC 调用 C");
}


// OC中:#include"testtwo.h"
- (void)playCCCC {
     //. 调用C语言方法
  		sayHello();
}

C语言调用OC:

从汇编角度来看:无论是C函数或者是OC方法,他们同样都是一个函数的地址。区别在于:C函数调用直接通过函数名&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值