Objective-C和swift混编

2024-06-07 10:08
文章标签 swift objective 混编

本文主要是介绍Objective-C和swift混编,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

swift推出以后,宣称可以在swift中支持原先的oc库,所以本文介绍如何支持OC类。

首先创建一个Swift项目,然后创建一个Cocoa Class

这里写图片描述

然后创建一个Hello的oc类

这里写图片描述

然后点击确认后会弹出一个提示窗口

这里写图片描述

这是提示生成一个bridge头文件,用来把oc的类的头文件自动包含到swift中。所以点击yes自动会创建一个名为SwiftAndOC-Bridging-Header.h的oc头文件

在这个头文件中把所有要包含的oc类头文件写入,则xcode会自动导入到swift中,这里我们测试把Hello类导入,所以在SwiftAndOC-Bridging-Header.h中加入如下代码

#import "Hello.h"

然后修改一些Hello.h文件

#import <Foundation/Foundation.h>@interface Hello : NSObject
-(void)print;
@end

修改Hello.m文件

#import "Hello.h"@implementation Hello
-(void)print{NSLog(@"hello");
}
@end

此时,可以到swift中直接使用该类,而不需要导入任何文件。而且所有的创建对象,调用方法都是以swift的语法调用。

var hello = Hello()
hello.print()

如果是导入第三方OC库,则可以自己手动写一个桥接头文件,例如现在创建一个名为bridge.h的头文件,在里面加入

#import "Hello.h"

这里写图片描述

其中Swift Compiler中的Objectvice-C Bridge Header一项改为自己的所创建的头文件即可

这篇关于Objective-C和swift混编的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038878

相关文章

Swift知识点---RxSwift学习

1. 什么是RxSwift RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发、维护 RxSwift的目的是:让数据/事件流 和 异步任务能够更方便的序列化处理,能够使用Swift进行响应式编程 RxSwift本质上还是观察者模式,并且是一个响应式的,并且可以序列化的 观察者模式 观察者模式包括:KVO、通知等 爸爸妈妈照看观察宝宝 其中,

王立平-- Swift

Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。     Swift已经存在了多年。Apple基于已有的编译器、调试器、框架作为其基础架构。通过ARC(Au

The `XXXUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build......

出现的警告: [!] The `ColorInHeartUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ColorInHeart-ColorInHeartUITests/Po

swift快捷键大全

1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 CMD + S: 保存 CMD + SHIFT + S: 另存为 CMD + W: 关闭窗口 CMD + SHIFT + W: 关闭文件 2. 编辑 CMD + [: 左缩进 CMD + ]: 右缩进 CMD + CTRL + LEFT: 折叠 CMD + CTRL + RIGHT:

自学Swift之打印输出

所有编程语言都有的函数打印输出: print()         // 不换行输出 println()      // 换行输出       print 和 println 函数可以直接打印基本类型 var num = 10 println("hello " + (String)num)   // 方式1: 其他类型同String输出的时候需要强转 printl

Core Text Objective-C Wrapper

Core Text Objective-C Wrapper https://github.com/akosma/CoreTextWrapper Introduction(介绍) One of the most promising and mysterious new frameworks introduced in iOS 3.2 is Core Text. Apple define

Swift项目#if DEBUG不生效

在新建的iOS项目中 代码里使用#if DEBUG不生效 解决办法: 在Xcode中给项目添加Debug标识符 点击“Build Setting”搜素Swift Compiler - CustomFlags打开Active Compilation Condition添加Debug标记为“DEBUG”

Objective-C ,ios,iphone开发基础:JSON解析(使用苹果官方提供的JSON库:NSJSONSerialization)

json和xml的普及个人觉得是为了简化阅读难度,以及减轻网络负荷,json和xml 数据格式在格式化以后都是一种树状结构,可以树藤摸瓜的得到你想要的任何果子。 而不格式化的时候json和xml 又是一个普普通通的字符串,在网络通信的时候也只需要请求一次,而不用每次为得到木一个值而重复的请求服务器或者目标主机, json和xml 都采用 键 - 值 的形式来存放数据。 xml 使用:

Swift 3.0 学习 -- 大写和小写字符串(Uppercase and Lowercase Strings)

在swift2.0的时候,您可以通过字符串的uppercaseString和lowercaseString属性来访问大写/小写版本的字符串。如下:

Swift 3.0 学习 -- 计算字符数量 (Counting Characters)

在swift2.0的时候,可以通过调用全局countElements函数,并将字符串作为参数进行传递,可以获取该字符串的字符数量。如下: let unusualMenagerie = "Koala, Snail, Penguin, Dromedary"print("unusualMenagerie has \(countElements(unusualMenagerie)) charact