Swift调用OC和C

Swift文件:main.swift

import Foundation

//Swift调用C函数
desc1()

//Swift调用OC
//拿到OC类
var funcClass = Root()
funcClass.desc2()

OC文件:Root.h

#import <Foundation/Foundation.h>

@interface Root : NSObject

-(void)desc2;

@end

Root.m

#import "Root.h"

@implementation Root

//求和函数
//1、定义函数
int sum2(int a, int b)
{
    return a+b;
}

-(void)desc2
{
    //2、声明Block
    int (^p)(int, int);

    //3、函数指针指向函数
    //    p = sum2;
    p = ^(int a, int b) //把函数赋值给Block
    {
        return a+b;
    };

    //4、使用
    int result = p(10, 40);
    printf("OC方法输出result:%d\n", result);
}

C函数文件:

Fun.c

#include <stdio.h>

//求和函数
//1、声明函数
int sum1(int a, int b)
{
    return a+b;
}

void desc1()
{
    //2、声明函数指针
    int (*p)(int, int);

    //3、函数指针指向函数
    p = sum1;

    //4、使用
    int result = p(10, 20);
    printf("C函数输出结果:%d\n", result);
}

桥接文件:工程名称-Bridging-Header.h

//这里面需要导入 桥接的C或OC的头文件

//导入C函数
void desc1();

//导入OC头文件
#import "Root.h"

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 09:27:12

Swift调用OC和C的相关文章

Swift和Objective-C混合编程——Swift调用OC

在iOS应用的开发中,Swift必将取代OC,两者的趋势是"短期共存,长期取代".但以前有太多的代码是用OC语言完成的,而Swift的开发也从 OC中继承了很多的特性,两者也是有很多的类似之处.目前Swift和OC可以实现无缝的混合编程. 我这里会实现一个简单的Swift调用OC的iOS实例,实现过程是十分的简单的.就像我们所有的Hello World一样.具体操作步骤如下: (1)Xcode中新建一个iOS项目,语言选择Swift,设备选择iPhone.目录结构如下: (2)然后在该

Swift 学习 用 swift 调用 oc

开发过程中 很可能  把swift不成熟的地方用成熟的oc 代码来弥补一下 , 下面简单来学习一下,我也是照着视频 学习的 卖弄谈不上 就是一次学习笔记, 具体问题还是具体分析吧. 需求 给展出出来的的图片 添加触摸点击响应事件 实施方式:把这个 有触摸事件的UIImageView(OFImageView) 用 OC 写成一个对象  然后用swift 去调用 1,第一次创建 OFImageView  时候 会生成一个XXXX-Bridging-Header.h 文件  查了好多资料解释说 这个

走进swfit(三)Swift调用OC

在Swift中想调用自定义的OC类或开源包,只需要做下桥接就可以 了,创建一个以项目名-Bridging-Header.h文件的文件,.h文件就可以像OC里一样import你想要的文件 ,然后在Build Settings中Objective-C Bridging Header,在其值的地方,填入你自己创建的头文件就可以了. 1. 可以将相应头文件拖到填值的输入框中 2. 手动填写头文件路径到输入框中,如: JokerMost/Swift-ObjectiveC-Bridge.h 其实#defin

Swift调用Objective C的FrameWork

很多Github的库经过很多年的发展,源码都是OC写的,,所以,用Swift调用OC的库就是开发中难免遇到的的一个问题,本文以AFNetworking为例,讲解如何跨语言调用. 第一步 创建一个空的工程  注意,语言选择Swift 第二步,创建bridging-header 这个文件的作用,就是把OC的接口暴露给Swift.有两种方式  方式一  创建一个OC文件,然后点击确定    弹出是否要创建Bridging-Header,点击确定,这样会生成三个文件,其中的一个就是我们要用的SwiftU

Swift与OC交互

Swift与OC交互 源码请点击github地址下载. 主要功能: 1.在OC项目里: 1.1.OC代码调用Swift方法 1.2.Swift代码调用OC代码. 2.在Swift项目: 2.1.Swift代码调用OC代码 2.2.OC代码调用Swift方法. 不管在什么项目里,在创建另外一种开发语言文件时系统会提示创建桥接文件OCAndSwift-Bridging-Header.h(其中OCAndSwift代表项目名称.),一定得有这桥接文件swift代码才能调用OC. 功能1.1与2.2他们都

ios开发——实用技术篇Swift&amp;Swift调用C、C++、Object

Swift调用C.C++.Object 1.Swift调用C语言a,首先在项目中添加 CFile 文件命名为CHello,同时产生桥梁文件. b,创建之后的项目结构 b,在CHello.h文件中编写接口方法,在CHello.c编写实现方法,最后在SwiftCallC-Bridging-Header.h文件中引入CHello.h CHello.h文件 #ifndef __SwiftCallC__CHello__ #define __SwiftCallC__CHello__ #include <st

详解swift和OC以及C语言的混编(不看后悔!)

前言: Swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,或者有一些第三方使用OC写的,没有swift版本,怎么办?那就使用混编.这个在IOS8后是允许的. 先简单的入手,先研究在同一个工程目录下混合使用的情况.这里主要介绍swift类中调用OC方法和swift类中调用C函数以及OC类中调用swift的函数这三种类型的混编.另外,小编也是边研究边尝试才做出结果的,因此命名并非规范命名,大

Swift和OC混合使用

Swift and Objective-C in the Same Project在项目里交叉使用Swift和OC Swift与OC的兼容性使得你可以在项目里使用Swift+OC的方式编写应用程序,称为混合+匹配(mix and match),用这种方式可以一边使用享受新语言的快速特性,一边无缝的接合你已有的OC代码(原文听起来好NB的样子,其实也就那么回事),不管项目最初是用OC编写的还是新建的Swift项目,都可以在这个项目里用OC和Swift混合继续开发 Importing Objecti

Swift、OC、C++混合编程

OC调用C++: 1.创建oc工程: 2.主要步骤:将某个.m文件后缀改为.mm, 3.创建c++文件 #ifndef __Test__CPPHello__ #define __Test__CPPHello__ #include <stdio.h> class CPPHello { public: static void hello(); }; #endif /* defined(__Test__CPPHello__) */ CPPHello.h 1 void CPPHello::hello(