• OCSwift混编Pod引入第三方库的问题 问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是...

    OC和Swift混编Pod引入第三方库的问题

    问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是xcode总是报错找不到该文件。接下来详细描述问题和原因。

    1.为了在Swift项目中引入OC 开源框架,我使用了pod工具引入。然后下图:

    2.之后创建桥接文件:

    3.然后就是在配置文件中设置桥接文件路径:

    4.到这里就看似完成了,一切都很简单。但是,当编译时问题就来了,如下图:

    原因是找不到该文件。可是明明使用了pod工具引入了啊。(注:百度清一色的都是以上步骤,该问题并未在百度查询到问题原因和解决方案。所谓博客恐怕都是出自一人)

    5.在作了大量的测试和摸索后,终于得意解决。问题的根本原因就是我之前用pod引入了Swift开源框架,为了方便,在引入OC开源框架时我同样是使用了pod工具。我们回看第一步

    Swift框架:

    pod 'SnapKit''~> 0.30.0.beta1'

    pod 'Alamofire''~> 3.4.0'

    pod 'SwiftyJSON''~> 2.3.2'


    OC框架:

    pod 'SVProgressHUD'

    pod 'MJRefresh'

    同样还有一句话:

     use_frameworks!


    没错,简单的说,在OC开发时并不用使用该语句,但是Swift开发时使用pod工具就需要加上这句话。这就导致了OC 和 Swift公用同一个项目工程中的pod时造成了以上显示的错误,即使其他步骤都没有错,但是错误原因就是找不到文件。

    至于为什么会这样,我联想到了之前看到过的一篇文章好像是有这么一句话(记不太清楚了)OC是动态语言,而Swift是静态语言,这就是为什么两者在使用pod时关于这句话是否要加上的浅显原因(其实深入的东西就需要接着百度了)

    既然原因找到了,解决它就好办了,我们只要把这两种语言的开源框架分开管理就可以了。。。。



    展开全文
  • swift导入oc第三方库

    2019-05-05 15:31:39
    对于ios开发而言,目前很多第三方库或者demo还是以oc为主,swift相关的资料很少,这篇文章就结合博主的开发实例对在swift工程中导入并使用oc版本的第三方库进行阐述。 正文 1.编写oc桥接头文件 顾名思义,将oc编写的...

    swift导入oc第三方库

    前言

    对于ios开发而言,目前很多第三方库或者demo还是以oc为主,swift相关的资料很少,这篇文章就结合博主的开发实例对在swift工程中导入并使用oc版本的第三方库进行阐述。

    正文

    1.编写oc桥接头文件

    顾名思义,将oc编写的库桥接到swift工程里的头文件。
    结合实战,首先我在项目工程的根目录下创建一个名为xxxx.h的.h文件,内容如下,暂时不去修改:

    #ifndef xxxx_h
    #define xxxx_h
    #endif 
    

    接着,在项目的targets里的Build Settings选项里,找到Objective-c Bridging Header选项:

    在这里插入图片描述
    将这一项设置为刚刚创建的.h文件,如“xxxx.h”

    2.导入第三方库

    做完第一步,准备工作就已经做好了,接下来也很简单。我在这里分两种情况进行阐述。
    (1)framework形式导入的第三方库:
    例如集成支付宝的sdk(https://docs.open.alipay.com/204/105295/),导入后项目里会存在AlipaySDK.framework文件。这个时候在swift中,你还是不能直接引用支付宝相关的类和方法的,这个时候,我们在刚刚创建的桥接文件里,加上:

    #ifndef xxxx_h
    #define xxxx_h
    //导入支付宝的OC的头文件
    #import <AlipaySDK/AlipaySDK.h>
    #import <AlipaySDK/APayAuthInfo.h>
    #endif 
    

    然后你会发现,在代码里,你就可以正常调用支付宝SDK中的类和方法了,就这么简单。
    (2)直接拷贝的第三方库:
    例如第三方客服平台Udesk的集成(http://www.udesk.cn/doc/ios/udesksdk_ios/),按其要求手动将第三方工程文件导入你的项目中后,你的项目会存在如下的文件夹:

    此时,仍然需要在桥接文件里将你所需要用到的类文件导入,如:

    #ifndef xxxx_h
    #define xxxx_h
    //导入Udesk的OC的头文件
    #import "UdeskSDK/SDK/UdeskAgent.h"
    #import "UdeskSDK/SDK/UdeskCustomer.h"
    #import "UdeskSDK/SDK/UdeskManager.h"
    #import "UdeskSDK/SDK/UdeskMessage.h"
    #import "UdeskSDK/SDK/UdeskOrganization.h"
    #import "UdeskSDK/SDK/UdeskSetting.h"
    #import "UdeskSDK/UDChatMessage/Udesk.h"
    #endif 
    

    然后,在项目targets的general选项中,找到“Linked Frameworks and Libraries”,将第三方库中的.a文件添加进去:


    点击add other…之后选择.a文件即可。接下来你就可以在swift中调用第三方库的类和方法了。

    swift导入oc第三方库的方法就说到这,欢迎留言讨论~

    展开全文
  • 在进行swift编程的时候,有时候难免要进行与Objective-c的混编(如引入OC语言的第三方库),本文主要讲述swiftOC混编的两种方法。 一.比较方便直接的方法 1.直接在创建好的swift工程中任意新建一个OC的类,我们会...

    在进行swift编程的时候,有时候难免要进行与Objective-c的混编(如引入OC语言的第三方库),本文主要讲述swift与OC混编的两种方法。


    一.比较方便直接的方法

    1.直接在创建好的swift工程中任意新建一个OC的类,我们会看到如下图所示的一个提示,直接点Yes即可,之后我们会发现工程中多了一个“工程名”-Bridging-Header.h这样一个.h文件,然后把刚才创建的无用的OC的类删除掉



    2.然后我们只需把用到的OC类的头文件,在这个类里引用就可以了,图中以AFNetworking为例。



    二.在工程里面正八经的设置

    1.新建一个.h文件,命名为 “工程名-Bridging-header”

    2.在Build setting 的 objective-c bridging Header里面添加这个头文件“工程名-Bridging-header.h”(我在这样添加的时候有时候会提示找不到文件的错误,解决办法:添加的头文件名改为“工程名/工程名-Bridging-header.h”)如图,这样实现的效果和方法一里面的是一样的,往下的步骤同方法一中的第2步。



    展开全文
  • 这就涉及到OCswift混编了,正好本人最近也在模仿斗鱼直播的项目,自己也使用了OC第三方库,今天就给大家介绍一下自己的使用过程。 一、导入第三方库 这里需要注意点,我使用pod导入OC第三方库...

    在swift开发过程中我们难免会使用一些OC的开源库来附注项目开发。这就涉及到OC和swift的混编了,正好本人最近也在模仿斗鱼直播的项目,自己也使用了OC的第三方库,今天就给大家介绍一下自己的使用过程。

    一、导入第三方库

    这里需要注意点,我使用pod导入OC的第三方库SDCycleScrollView,然后进行配置出现找不到SDCycleScrollView的错误,最后还是直接复制SDCycleScrollView到项目中才解决的问题,这一点还不知道为什么,希望清楚的这个问题的同学指正。

    二、创建头文件

    创建一个头文件,然后将SDCycleScrollView.h文件导入到头文件中。
    创建头文件
    导入头文件

    三、配置桥接头文件

    在Build Setting里面搜索bridging,然后向Objective-C Bridging Header中添加我们创建的头文件的地址,如下图:
    配置头文件

    四、使用OC方法

    还是使用swift的方法调用就可以。

     let imageNames = ["1.png", "2.png", "3.png", "4.png","5.png"]
            let cycleScrollView = SDCycleScrollView.init(frame: CGRect (x: 0, y: 0, width: self.view.frame.size.width, height: 200), shouldInfiniteLoop: true, imageNamesGroup: imageNames)
            cycleScrollView?.delegate = self
            self.view.addSubview(cycleScrollView!)
    

    五、OC代理方法的使用

    第三方的方法会自动转成swift的方法,所以只要还是使用swift的方法调用就可以啦!

    /*
     1、按照swift的代理执行方式来就可以。
     */
    extension RecommendVC : SDCycleScrollViewDelegate{
        //图片滚动回调
        func cycleScrollView(_ cycleScrollView: SDCycleScrollView!, didScrollTo index: Int) {
            print("图片滚动回调\(index)")
        }
        //点击图片回调
        func cycleScrollView(_ cycleScrollView: SDCycleScrollView!, didSelectItemAt index: Int) {
            print("点击图片回调\(index)")
        }
    }
    
    
    展开全文
  • OCSwift混编(惊喜!)

    2015-05-12 20:30:25
    今天在和一位前辈交流的之后,使用了OCSwift混编开发,遇到了一个让我忍不住要欢呼的情况,在这里,跟大家分享一下,也再次赞叹一下XCode的强大.OCSwift混编出现最多的就是在编写Swift代码的过程中使用OC框架了....

    今天在和一位前辈交流的之后,使用了OC和Swift混编开发,遇到了一个让我忍不住要欢呼的情况,在这里,跟大家分享一下,也再次赞叹一下XCode的强大.

    OC和Swift混编出现最多的就是在编写Swift代码的过程中使用OC框架了.
    以前,在XCode6.3beta版本的时候,我犹记得我们在进行OC和Swift混编的时候,需要这样做.

    • 先通过Pod导入第三方框架,然后,
    • 使用 Xcode 打开工作组文件
    • 在 Supporting Files 下添加桥接文件 Test-Bridge.h
      输入以下内容

      #import <SDWebImage/UIImageView+WebCache.h>
      #import <SVProgressHUD/SVProgressHUD.h>
      

      点击 项目 - TARGETS - Build Settings
      搜索 bridg
      在 Objective-C Bridging Header 中输入 Test/Weibo-Bridge.h
      然后导入命名空间.

    而现在!!!!!!!
    我要告诉大家一个惊天好消息!!!
    就是!
    在XCode6.3.1版本以后,我们在用Pod导入第三方框架后,再也不需要做任何配置了,直接就可以使用,今天亲测发现!!!

    展开全文
  • 所以,我们团队开始尝试探索把我们庞大的项目实现ocswift混编。至于为什么不直接重构,那是因为实在是时间和事实不允许,毕竟我们的APP已经是好几年的庞然大物了。  言归正传,我开始尝试着用swift来重写一个oc...
  • 项目下个版本开始用Swift编写,这涉及到OCSwift混编的问题。早podfile中写入use_frameworks! 再导入一个Swift第三方框架,运行项目发现AFN找不到了:把Swift的第三方和use_frameworks!去掉项目又可以运行了,首先...
  • 初试OC Swift 混编

    2020-07-03 13:51:09
    初尝OC swift 混编新的开始!项目配置文件相互访问方法和常量变量的相互访问零碎的乱七八糟的东西总结 新的开始!...示例为老OC项目加入swift混编. Xcodeb版本11.5 Swift版本5.0 首先创建一个.swi
  • Swift混编OC第三方库

    2019-07-24 10:29:32
    现在Swift第三方库还比较少,有时候需要使用OC第三方库,其实也是很容易的。 我们使用如下步骤: 1、新建的Swift项目,第一次创建OC文件时会询问是否生成 桥接头,选择是的话会生成一个桥接头文件,文件如图: ...
  • OCSwift混编后,感觉吊吊地,但某一天要发布应用时,心情就纠结了。本地AD hoc打包30.4M,发布应用到商店并且成功上线,发现APP体积为48.8M,心情非常惊讶。同事产品需求要把APP体积降到10M,一阵....。那么,APP...
  • Swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,或者有一些第三方使用OC写的,没有swift版本,怎么办?那就使用...
  • 参考资料: ... ... 两天时间探索,期间不知道遇到了多少问题,各种google和Stack Overflow,甚至都求助了群友的力量。期间也想过放弃,还好有一颗不甘的心。终于成功了!...开心,哈哈,希望有缘人遇到同样问题的话,下面...
  • OCswift混编

    2019-08-01 17:08:05
    2、第三方库swift库,导入到OC项目。 不考虑 3、第三方库OC库,导入到swift项目。 用到的文件中需要:import AFNetworking 4、第三方库OC库,导入到OC项目。 用到的文件中需要:#import "AFNetworkin...
  • OCSwift混合使用

    2017-07-11 09:13:02
    随着swift趋向于稳定,越来越多的公司启动的新项目也想使用swift过把瘾,使用swift的好处与弊端不再赘述。目前版本是swift3.0,而且Xcode9beta版中已经更新到swift4.0。使用swift开发是大趋势,...OC引用Swift第三方库
  • 现在写swift,很多的类库还不是很全,很多的第三方还是只有OC版的,这个时候swift想用,通常都是采用的swiftOC混编的方式.这里给大家演示一下混编是如何做的. swift中使用OCOC中,如果我们要使用某个类,我们...
  •  项目中用了MJExtension第三方库,今天合并了同事的代码,突然就报错了。上图  说属性重新定义了。 二:解决思路;  1.MJExtension里的内容我肯定事没动的,那么怎么会出问题。源码不能动。  2.查资料,都是...
  • OCSwift混编

    2018-02-27 10:03:03
    OCSwift混编本人在接入猴子测试的过程中。需求使然。需要对OC集成swift代码进行混编。一 先说如果是OC混编Swift的情况1. 首先创建一个名称为BridgeTest的项目,语言选择Object-C。创建项目2.如果我们想在OC的项目...
  • 一、概要 首先看《The Swift Programming Language》中提到“Swift’s compatibility with Objective-C lets you create a project that contains files written in either language. ”
  • 做了一个oc项目,里面有用到swift第三方,真机运行的时候是正常的,用企业级证书打包成ipa之后安装完成之后闪退,通过导出手机log日志发现错误提示: Dyld Error Message:  Library not loaded: @rpath/...
  • 看这篇文章之前,你得先确保你知道Swift如何与Objective-C混编,也知道Objective-C如何与C++混编,如果不知道,请百度一发,因为不会细讲。 最近用swift写一个iOS的程序,由于有一部分的算法是用C++写的,只好去...
1 2 3 4 5 ... 20
收藏数 705
精华内容 282