首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

27.Swift学习之与OC混编

在目前iOS开发语言从Objective-C到Swift的过渡时期,开发中难免会碰到两种语言同时存在的情况,如果在同一个项目中,两种语言并存,那么该项目就是一个混合项目。...混合项目提示信息.png 这短话的大意:添加这个文件会创建一个Objective-C和Swift的混合项目,你是否希望Xcode自动配置一个桥接头文件来让两种语言的类文件相互可见?...此时项目中会多出两个文件,分别是创建的Swift文件和Bridging Header文件,Bridging Header文件里面虽然什么都没有,但是已经帮我们做了很多事情。...Swift文件如下: class Person: NSObject { } 在Objective-C的类中导入头文件,注意此时导入的头文件是一个命名为项目名-Swift.h的头文件,而不是Bridging...项目中调用Objective-C 新建一个Swift的iOS项目 创建一个Objective-C的类,此时也会有如一中的文字提示,修改类文件如下: @interface Person : NSObject

1.2K10

Swift引用AFNetworking

什么是 CocoaPods 从介绍看,它是主要给 Objective-C 项目用的,但是我们可以很容易地混合 Objective-C 和 Swift 到同个项目,从而利用大量的 CocoaPods 库和...结果刚写几句代码一堆类和变量找不到定义,而且坑爹的是很多时候我们只能靠猜测,判断这些 Objective-C 的定义转换成 Swift 定义是什么样子,用起来就是完全靠蒙!...Swift引用OC 那就是按照和 Objective-C 代码混编的例子,添加 Bridging Header !...---- 手动添加Bridge Header 在项目的根目录添加一个头文件 假如就叫做 Bridge-Header.h 打开项目配置 -> Build Settings 搜索 swift 找到Objective-C...然后 Swift文件压根没有 头文件 ,OC中咋调用 这个不用担心,其实系统会自动对所有的Swift类建立一个头文件名字为项目名-Swift.h 假如你的项目名为 Demo01 需要引用Swift类的

2.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Swift基础语法(四)

    混合开发 在iOS开发中,难免会遇到Swift和Objective-C这两种语言同时存在的情况,如果在同一个项目中,两种语言并存,那么该项目就是一个混合项目。...这个提示的大意是:添加这个文件会创建一个Swift和OC的混合项目,你是否希望Xcode自动配置一个桥接头文件来让两种语言的类文件相互可见?...Swift 1,新建一个Objective-C项目 2,创建一个Swift的类,继承自NSObject,此时也会有上面的提示,选择Create Bridging Header 3,此时项目中会多出两个文件...关键字 @objc func eat() { print("吃饭了~") } } 5,在OC类中导入头文件,注意此时导入的头文件是一个命名为 项目名-Swift.h 的头文件...6,在OC代码中调用Swift: #import "ViewController.h" //导入"项目名-Swift.h文件" #import "NormanOC-Swift.h" @interface

    3.9K20

    iOS OC调用Swift

    文件的oc类中导入“项目名-Swift.h”文件,command+鼠标点击看是否能进到文件中 Finished running TRTCDemo on khiPhone.png 6、进不去“项目名-Swift.h...”文件就自己创建一个以”项目名-Swift.h”文件 Finished running TRTCDemo on khiPhone.png Finisnec running.png 7、回到第5步进到“项目名...8、删除本地自己创建的“项目名-Swift.h”文件,再重复第5步进来就能看的你需要的“项目名-Swift.h”文件了 h TRTCDemo-Swift.h.png h TRTCDemo-Swift.h.png...然后就可以在OC类中导入“项目名-Swift.h”文件调swift文件了 最后 因为是以TUIMeeting为例,直接用pod集成的TUIMeeting组件中有些类如TRTCMeetingMainViewController...、TRTCMeetingMemberViewController引用不到;跟到错误中看到有一个TUIMeeting-Swift.h文件, TUIMeeting-Swift.h里面发现没有TRTCMeetingMainViewController

    2.7K50

    swift 与现有OC项目混编

    swift 与现有OC项目混编 最近在玩vapor,于是借助公司的服务器划分出来50G空间分配8G内存做了个App日志上传的server,顺便使用swift将日志收集集成到现有OC项目中…… 不得不说,...swift与OC集成还是有一点小小麻烦: 1 做桥接头文件 项目名称-Bridging-Header.h 2 自动生成针对swift在OC中使用的头文件 项目名称-Swift.h 3 swift 暴漏给...中可以使用 ``来包裹 @objc static let `default`: LogOnline = LogOnline() OC 中你就别想啦 6 关于使用 OC中导入项目名称-Swift.h即可调用所有...swift暴漏出的属性和function,大家可以点击对应的头文件自己查阅 7 swift中的缺省和默认function变量在OC中你就别想了,乖乖的写上吧--oc是使用字符串来区分method的...= 0, LogModeProduct = 1, }; 从 8、9我么看出swift集成到OC是经过编辑器自动优化,并且带有浓厚的swift声明

    1.3K30

    干货 | 一波N折的携程酒店Swift-Objc混编实践

    二、Objc& Swift混编 集成好Swift静态库之后,马上开始准备我们第一次的Objective-C和Swift混编,不幸的是模拟器启动后即崩溃了,控制台上显示“dyld: Library not...}-Swift.h needs_copy=true if [ -f"$header_file_in_proj" ]; then echo "${header_file_in_proj} 已存在"...cp ${generated_header_file}${header_file_in_proj} fi 至此,在Objective-C项目内调用Swift静态库的问题全部得到解决,终于能让Swift...因为Swift终于引入了命名空间的概念(Objective-C一直以来令人诟病的地方之一就是没有命名空间),但是和C#这样显式在文件中指定命名空间的做法不同。...六、总结 至此,我们终于解决完了Swift在携程app内应用的所有已知问题,让Swift以静态库的形式完美集成到项目中,并可以在Swift和Objective-C之间互相调用,和携程的CI平台也能无缝集成

    1.5K31

    iOS开发中实现OC和Swift的混编

    OC使用起来更简洁了,于是就想在原有项目中引入swift。...原有的项目都是使用OC写的,既然要在原有项目中引入swift文件首先就要实现OC和swift的混编设置。 混编设置: 在OC项目中创建一个swift文件的时候首先Xcode会弹出一个提示框: ?...这时我们要选择“Create Bridging Header”,这样就会在项目中生成一个进行OC和swift桥接的.h文件文件和我们要创建的一个swift文件。...在项目中创建一个.h文件,文件名:“项目名称-Swift.h”,如:OCAndSwift-Swift.h,创建完成之后我们在需要引入swift文件的OC文件中引入这个.h文件,然后在工程中将此.h文件删除...创建一个swift文件,在要使用该swift文件的OC文件中直接使用该swift文件即可,都不用引入此swift文件。

    2.6K41

    Swift和Objective-C混编在有赞移动的实践

    调整后,原有的子项目通过头文件暴露的方式仍旧可以访问和依赖,模块间的 Router 和 BeeHive/Bifrost 模块管理也都支持,即该过程对于需求开发团队是无痛的。...我们在周会上和大家同步了如何将原有的 Xcode 子项目模块迁移到 development pod ,简言之分为三个部分,声明源码,声明资源文件,声明依赖和其他配置,具体 podspec 文档可以参考Cocoapods...5.4 链接错误 我们将上述工作做完后引入到宿主工程中,进行编译的时候会出现链接错误,不要担心,那是因为宿主工程中缺少 Swift 的某些系统库,在宿主工程中建立一个 Swift 文件方可解决。...类中引用 ProductName-Swift.h 头文件即可引用暴露给 Objective-C 的 Swift 的类和方法 5.7 pod spec lint 验证和发布 在 pod spec lint...构建 Swift 静态库,不影响启动速度 七、总结 目前微商城项目已经进行了混编项目开发,比如学习中心模块是一个纯 Swift 的二方库,而消息业务模块则是一个 Swift 和 Objective-C

    2.3K20

    前端开发:混合技术栈的应用

    目录前言混合技术栈的优势移动端开发嵌入H5OC项目嵌入Swift的使用HarmonyOS开发中嵌入WebView结束语前言随着技术的不断进步,软件开发领域正经历着一场技术融合的革命,特别是混合技术栈的应用...1、场景描述在Objective-C项目中嵌入Swift代码可以利用Swift的新特性和性能优势。...2、实现方法在Xcode项目中创建Swift文件,并确保在Build Settings中设置了“Defines Module”为“Yes”。...} // Objective-C中调用Swift函数 #import "YourProject-Swift.h" NSString *greeting = sayHello(name:@"World"...上面通过具体的代码示例和实际案例,展示了混合技术栈在不同平台和项目中的实践应用,希望能够帮助大家在面对复杂多变的开发需求时,能够灵活运用各种技术,构建出更加强大和稳定的应用。

    12221

    一样的iOS开发程序员为什么有人4k有人40k?原因就在这里!

    一,Swift 最终肯定会替代Objective-C? 有一点不容怀疑:Swift 最终肯定会替代 Objective-C,成为主要的 iOS 开发语言。...我们曾经拿猿题库的 App 测试过,采用 Swift 和Objective-C 混合编写的方案后,应用体积会增加 10M,这对于公司来说还是比较大的困扰。...我个人对于 Swift 的预期是:在 1、2 年内能够全面替代 Objective-C。但在近期,我个人还是会使用 Objective-C 来完成公司的项目。 二,iOS 开发者应该如何自我提升?...首先要负责,对自己的项目负责。如果是自己新开的项目,要保证随时都能清晰的想到项目当中每个地方是怎么实现的,测试或者用户反馈了问题以后,能立马想到可能的错误原因。...如果是接手的项目,就要尽快去了解主要的界面和功能是如何实现的。你只有先做好自己分内的事,才有机会去顾暇别人的事。 1.保持一个良好的代码规范以及文件架构。

    83300

    App架构设计经验谈:技术选型

    加载本地的H5页面,则需要将H5文件存放在本地,包括关联的CSS和JS文件。这种方式相对比较复杂,不过,加载速度会比第一种快很多。我们当前项目基于上面考虑,只能选择第一种方案。...Objective-C/Swift 我在项目中选择了Swift,主要基于三个原因: Swift真的很简洁,生产效率很高; Swift取代Objective-C是必然的趋势; 目前iOS只有我一个人开发,...如果你的团队里没人懂Swift,那还是乖乖用Objective-C吧;如果有一两个懂Swift的,那可以混合开发,并让不懂的人尽快学会Swift;如果都懂了,不用想了,直接上Swift吧。...当语言上选择了Swift,相应的一些第三方库也面临着选型。比如,依赖库管理,Objective-C时代大部分用CocoaPods,Swift时代,我更喜欢Carthage。...我在实际项目中思考架构时,也不会想着要用哪种模式,我只思考现阶段,以现有的人力资源和时间资源,如何才能更快更好地完成需求,适当考虑下如何为后期扩展或重构做准备。

    1.5K10

    你知道在iOS开发的工作中为什么有人4k有人40k吗?

    丨Swift 最终肯定会替代Objective-C   有一点不容怀疑:Swift 最终肯定会替代 Objective-C,成为主要的 iOS 开发语言。...我们曾经拿猿题库的 App 测试过,采用 Swift 和Objective-C 混合编写的方案后,应用体积会增加 10M,这对于公司来说还是比较大的困扰。...我个人对于 Swift 的预期是:在 1、2 年内能够全面替代 Objective-C。但在近期,我个人还是会使用 Objective-C 来完成公司的项目。   ...首先要负责,对自己的项目负责。如果是自己新开的项目,要保证随时都能清晰的想到项目当中每个地方是怎么实现的,测试或者用户反馈了问题以后,能立马想到可能的错误原因。...如果是接手的项目,就要尽快去了解主要的界面和功能是如何实现的。你只有先做好自己分内的事,才有机会去顾暇别人的事。   1.保持一个良好的代码规范以及文件架构。

    2.8K90

    IOS 代码扫描从放弃到入门

    oclint.xml 一个目录下,执行该脚本 生成 Sonar 报告 将如下内容保存为 sonar-project.properties 文件,放到 AFNetworking 目录下 sonar.projectKey...wuwen1030/oclint_argument_list_too_long_solution/tree/master 解决方案: oclint-json-compilation-database可以过滤不想扫描的文件和需要扫描的文件夹...-e忽略扫描和-i是指定扫描路径 oclint-json-compilation-database -e pods -i build 虽然使用上面的命令扫描,不报错误,但是在平台中扫描的bug数是0...=infer-out/report.json infer infer是facebook开源的一款代码扫描软件,可以分析 Objective-C, Java 或者 C 代码,报告潜在的问题 在releases...问题记录 问题1 解决方案: lizard 这个报告不要了,暂时去掉 问题2:java包中没有这个规则 解决方案: 1、用 -Dsonar.exclusions=文件路径这个排除 2、在report.json

    3.3K20
    领券