oc中怎样混编swift框架_oc 混编swift ,oc 中不能找到swift 方法 - CSDN
  • 概述 Swift的设计的初衷就是摆脱...随着Swift的改进及Swift开源项目剧增,越来越多的Objective-C工程开始使用Swift混编,不管是在基于Swift工程或者Objective-C工程Swift和Objective-C文件都可以无缝结合。本文

    概述

    Swift的设计的初衷就是摆脱ObjC沉重的历史包袱,毕竟ObjC的历史太过悠久,相比于很多现代化语言它缺少一些很酷的语法特性,而且ObjC的语法和其他语言相比差别很大。随着Swift的改进及Swift开源项目剧增,越来越多的Objective-C工程开始使用Swift混编,不管是在基于Swift工程中或者Objective-C工程中,Swift和Objective-C文件都可以无缝结合。本文首先介绍下Swift与Objective-C混编的基本使用。

    Objc与Swift的渊源

    通过对swift的了解,大家不难发现Swift和ObjC必然存在着一定的映射关系,例如对于文件的操作使用了字符串的writeToFile方法,在网络请求时使用的NSURLSession,虽然调用方式不同但是其参数完全和做ObjC开发时调用方式一致。原因就是Swift编译器自动做了映射,如下图:(PS:借来的图)

    这里写图片描述

    Objc和Swift的相互调用

    切入正题,当我们使用OC和Swift在工程中进行混编的时候,通俗来说其实Objc文件和swift文件之间的相互调用。不管你的项目是基于Swift还是基于Objc的,无论是Swift中调用ObjC,还是ObjC中调用Swift都是通过头文件暴漏对应接口的,下图说明了这种交互方式:

    这里写图片描述


    • Swift调用Objc

    下面我们先建个Objc的工程,在Objc工程中新建Swift文件时,(或者在Swift工程新建Objc文件),Xcode会自动提示你是否创建bridging header桥接头文件,点击创建后Xcode会自动为你创建一个桥接头文件。Xcode会自动创建一个名为OC_Swift-Bridging-Header.h桥接头文件如图下图:

    这里写图片描述

    当然你也可以在Building Settings中自己设置桥接头文件,如下图:

    这里写图片描述

    创建好OC_Swift-Bridging-Header.h文件后,在OC_Swift-Bridging-Header.h文件中即可import需要提供给Swift的Objective-C头文件,Swift即可调用对应的Objective-C文件。同时Xcode可以自动生成Objective-C对应的Swift接口。

    ( PS:Objective-C类、协议、属性、方法、扩展、闭包等所有功能都可以无缝地被转换为Swift接口被Swift文件所调用。)


    • Objc调用Swift

    Xcode会自动为Project生成头文件以便在Objective-C中调用。在Objective-C类中调用Swift,只需要#import “productModuleName-Swift.h”即可调用,Xcode提供的头文件以Swift代码的模块名加上-Swift.h为命名。
    (PS:我这有个通俗的理解方式,不喜勿喷,可能不专业,但是好理解。。 “productModuleName-Swift.h文件可以理解为:这个是Objective-C调用Swift的,你写的swift文件在这个文件里对外提供了OC使用的接口,OC调swift,引入这个文件,相当于直接可以使用对外接口了,你可以通俗理解 平常OC的.h文件留的接口)
    在这个头文件中,将包含Swift提供给Objective-C的所有接口、Appdelegate及自动生成的一些宏定义。

    在大部分情况下,Objective-C都可以无缝地调用Swift,但是由于Swift相对于Objective-C多了一些新特性,比如泛型、元组、枚举的等,所以Swift暴漏给Objective-C的接口多了一些限制,因此Swift只能暴露在Objective-C中有效的接口。

    展开全文
  • OC Swift 混编

    2017-08-30 13:29:01
    只能退而求其次,混编了,大致根据百度到的方法试了一下,不是很难,总结起来就是两点:一、oc工程混编swift文件1.新建swift文件,首次新建的时候会提示是否创建桥接文件,选择创建,不要修改文件的名字,一般默认是...

    首先承认我落后了,到今天才开始在项目里用swift,而且还不是全部的用,只是oc和swift混编,因为实在是进入项目的时候框架已经用oc搭好了啊啊啊啊啊。
    只能退而求其次,混编了,大致根据百度到的方法试了一下,不是很难,总结起来就是两点:
    一、oc工程混编swift文件
    1.新建swift文件,首次新建的时候会提示是否创建桥接文件,选择创建,不要修改文件的名字,一般默认是 工程名+“-Bridging-Header.h”,这是swift调用oc的时候用到的,只要按照oc的方法把oc类的头文件导进来就好了,像这样

    #import "XXXXXXXX.h"

    然后在swift文件就可以调用oc了

    2.上面是swift调用oc,至于oc怎么调用swift就更简单了,创建swift文件的时候系统会自动创建Swift文件对应的Objective-C的头文件,一般默认为 工程名+“-Swift.h”,一般不做改动,而且平时你也看不到这个文件,只有导入了这个头文件,然后点进去,你才能看到文件的内容,如果写头文件时候不提示,clean一下。。。
    (注:如果过程中出现不提示或者编译不通过的情况,clean一下试试,一般就没问题了,如果还有问题,一定是上面还有哪没做好,请重试)
    二、swift工程混编oc文件
    还没有尝试,待续。。。

    展开全文
  • 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混编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编写,这涉及到OCSwift混编的问题。早podfile写入use_frameworks! 再导入一个Swift第三方框架,运行项目发现AFN找不到了:把Swift的第三方和use_frameworks!去掉项目又可以运行了,首先...
  • OCSwift混编

    2016-08-16 16:49:54
    写在前面: Swift 代码访问 Objective-C 代码,或者反之。导入外部框架时,请先确保 TARGETS ...在一个工程导入一些 Objective-C 文件供 Swift 代码使用时,你需要依赖与 Objective-C 的桥接头文件(Bridging-
  • Swift4与OC混编

    2019-03-06 11:43:05
    一、OC调用swift文件 在OC项目创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,如下图: 点确定创建桥接文件,Xcode会自动创建一个桥接文件,其名字为:工程名-Bridging-Header.h 这个桥接...
  • 相信很多开发者在开发过程,使用别人封装好的三方框架,但由于三方框架的开发语言(OC或者Swift)与现有工程的开发语言不一致,导致无法直接使用,那么对于混编来说,是不二的选择。 Swift项目使用OC框架   1...
  • 项目有这个需求,查看了很多资料,自己再Mark一下: 1、如果项目没有swift文件,需要创建一...3、在pods找到集成的swift三方库,在Build Settings搜索swift language version,改成三方库所支持的最高版本...
  • 问题描述:关于ocswift混编 框架framework时 只能在真机运行或只能在模拟器单独运行的解决方案。问题提供者:by 走跑解决方案:首先制作swift版本的framework(Cocoa Touch Framework)取名FirstMixed 1. 工程里面...
  • OCSwift混合使用

    2017-07-11 09:13:02
    随着swift趋向于稳定,越来越多的公司启动的新项目也想使用swift过把瘾,使用swift的好处与弊端不再赘述。目前版本是swift3.0,而且Xcode9beta版已经更新到swift4.0。使用swift开发是大趋势,这里从以下几个方面看...
  • swiftOC混编

    2017-02-17 13:06:37
    很多第三方库仍然使用 OC 实现项目原来已经用 OC 实现的模块如果使用 Swift 重写,代价稍大我们需要在项目使用 Swift 才能真正碰到问题,解决问题 注:不是为了混编混编混编只是在对开发资源、项目...
  • 首先创建一个project取个名字叫“MyMixed”,...然后在里面创建一个SwiftView.swift文件,一个objc的OCView文件和MyOCView文件三个文件都继承UIView 首先在SwiftView里调用OCView import UIKit class SwiftVi...
  • swiftOC混编配置

    2018-07-31 09:00:14
    swiftOC混编配置介绍 现在大家用swift开发的时候,会用到OC的第三方框架,这样就涉及到混编。下面说下混编要做的步骤: 1.首先导入你需要使用的第三方框架。如SVProgresHUD 2.创建projectName-Brigde.h文件,...
  • OCSwift混编的配置

    2016-09-02 14:24:33
    转自:http://blog.csdn.net/zhangqipu000/article/details/51965439 转自:... Using Swift with Cocoa and Objective-C 官方文档 为什么要混编? 语言发展趋势(TIOBE),Sw
  • OC 项目使用基于 Swift 的 CocoaPods 库 随着 Swift 的流行,各种神奇的库也开始有对应的 Swift 版本了,而其中一些更神奇的库却只有 Swift 版本… 正巧接手了一个前人用 Swift 写的项目,里面有一个...
  • 由于本人在开发过程主要用的是OC语言,所以pod的都是OC库,Podfile里又没加use_frameworks!所以一直都是.a类型的。后来因为需求需要用到一个只有swift版本的库,就使用use_frameworks!将所有.a库变成了.framework...
  • 最近在做一个swift的项目,但是用到了一个oc的刷新框架,建立了桥接后导入框架发现不提示方法名称,百度了好久最好找到解决方法。 1.第一步首先删除 此目录下的这个文件夹:~/Library/Developer/Xcode/DerivedData ...
  • 当我接手一个OCswift混编的项目的时候,其实我是拒绝的。哎,没有办法啊,只能干啦。 pod完以后有很多问题,最难的问题就是这个了, 其实是由于他Podfile文件里面有use_frameworks!这样一句话,首先,我们先说...
  • 有时需要OCSwift混编。学习研究了一下FaceAware 人脸感知开源库。 Swift方法传多值参数及OC调用 比如一个开源的图片处理框架,人脸感知库FaceAware FaceAware GitHub 地址页面,在Swift 内部可以这样设置一个...
1 2 3 4 5 ... 20
收藏数 698
精华内容 279
关键字:

oc中怎样混编swift框架