精华内容
参与话题
问答
  • iOS Swift和OC混编

    2016-03-30 14:14:04
    swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编。这个在IOS8中是允许的。 先中简单的入手,...

    swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编。这个在IOS8中是允许的。

    先中简单的入手,先研究在同一个工程目录下混合使用的情况。

    为了演示。先准备两个类

    第一个是swift语言写的类,文件名为 act.swift

     

    1. import Foundation  
    2.   
    3. class Act : NSObject  
    4. {  
    5.     func hasAct(tag:Int) -> String  
    6.     {  
    7.         switch (tag)  
    8.         {  
    9.         case 1:return "Movie"  
    10.         case 2:return "CCTV"  
    11.         case 3:return "Sport TV"  
    12.         default:return "Area TV"  
    13.         }  
    14.     }  
    15.       
    16.     init()  
    17.     {  
    18.         println("act constructor is called.")  
    19.     }  
    20.       
    21.     deinit  
    22.     {  
    23.         println("act destroyed is called.")  
    24.     }  
    25. }  

     

    第二个是用OC写的类 头文件为OCChannel.h ,实现文件为OCChannel.m

    头文件

     

    1. #import   
    2.   
    3. @interface OCChannel : NSObject  
    4.   
    5. @property (nonatomic,retain) NSString *ChannelName;  
    6.   
    7. - (NSString *)ChannelChange:(NSInteger) channels;  
    8.   
    9. @end  

    实现文件

     

     

    1. #import "OCChannel.h"  
    2. #import "SwiftModule-swift.h"  
    3.   
    4. @interface OCChannel()  
    5. {  
    6.     Act     *act;  //swift的类  
    7. }  
    8. @end  
    9.   
    10. @implementation OCChannel  
    11.   
    12. - (id)init  
    13. {  
    14.     if (self = [super init]) {  
    15.         NSLog(@"OC Constructor is called.");  
    16.         //使用Swift类  
    17.         act = [[Act alloc]init];  
    18.     }  
    19.     return self;  
    20. }  
    21.   
    22. - (void)dealloc  
    23. {  
    24.     NSLog(@"OC Destroyed is called.");  
    25.     //[act release];//ARC not use  
    26.     //[super dealloc];//ARC not use  
    27. }  
    28.   
    29. - (NSString *)ChannelChange:(NSInteger) channels  
    30. {  
    31.     return [act hasAct:channels];  
    32. }  
    33.   
    34. @end  

    这个OCChannel为中引用了swift 写的类Act 。主要是为了演示在同一个工程项目里,swift类调用OC,同时OC类也调用Swift。从而形成一种混合编写的模式。

     


    下面是具体步骤:

    1.新建一个Swift工程:我这里工程名为MixDemo


    建好后工程:


    2.就是分别引入前面的两个类,咱先一个个来。因为建的是Swift,所以,咱先以Swift工程中引用OC文件进行一次混编

    Swift中使用OC

    首先Swift中不再使用头文件和.m文件的方式了。所以也不需要使用import ""来导入头文件。哪swift 如何能访问到OC的类声明的。

    其实,swift也是需要使用头文件进行访问的,只不过不再需要使用显式的方式使用import进行导入。有两种方式来实现这个头文件的生成。

    方式一:在一个全新的Swift,利用第一次新建提示的方式自动添加桥接头文件。




    点确定这后就会生成一个以的头文件。

    建好后的工程:


    这里有一个地方需要注意的就是在targets->build settings ->Object-C Bridging Header 设为哪个桥接的头文件即可。



    经过上述步骤,桥接文件弄好了就可以

    尽情的把想要在swift类中调用的OC头文件放使用import "" 写到这个桥接文件中吧。就像:

     

    1. //  
    2. //  Use this file to import your target's public headers that you would like to expose to Swift.  
    3. //MixDemo/MixDemo-Bridging-Header.h  
    4.   
    5. #import "OCChannel.h"  

    同样的,当你知道这个swift搜索头文件的关系后,就不需要再理会这个-Bridging-Header.h的文件了。完全可以手工建一个并取自己喜欢的名字。如:

     

    方式二:

    新建一个头文件,名为:OCContainerHeader.h



    好了,以上的设置后就完全满足了Swift使用OC写的类了。

     

    1. import UIKit  
    2.   
    3. class ViewController: UIViewController {  
    4.                               
    5.     override func viewDidLoad() {  
    6.         super.viewDidLoad()  
    7.         // Do any additional setup after loading the view, typically from a nib.  
    8.   
    9.         //调用OC类  
    10.         var channel = OCChannel()  
    11.         println(channel.ChannelChange(10))  
    12.         println(channel.ChannelChange(2))  
    13.     }  
    14.   
    15.     override func didReceiveMemoryWarning() {  
    16.         super.didReceiveMemoryWarning()  
    17.         // Dispose of any resources that can be recreated.  
    18.     }  
    19.   
    20.   
    21. }  

    好了下面再来看一下OC如何调用Swift写的类。(事实上,如果你是一比一抄我这个DEMO,哪么恭喜你,在以上你将编译不通过。因为我的OC类中引用了swfit 写的类,所以你要想运行,就必须把哪个Act 的类注释了才行。)

     


    OC如何调用Swift写的类

    OC要想使用,必须有头文件。而swift文件却没有头文件,所在咱们想必也需要产生一个头文件。但对于OC调用swift  的头文件比较特殊。因头文件里面的机制是自动生成的,在不熟悉的,不建议手写。

    哪如何产生这个头文件。(注意,系统设置的头文件,在工程中是看不到的。)

    产生步骤:

    选中targets->build settings ->packing->Product Module Name 中设置模块名,这个名称很重要 swift 的头文件就是根据这个来命名的。



    虽然你看图中有这个import "SwiftModule-swift.h"但你在整个工程中是找不到这个文件的,但可以使用CMD+ 鼠标点击可看这个头文件中的内容。



    这样,工程中如查Swift要使用OC,则把需要使用的OC类的头文件,全写在MixDemo-Bridging-Header.h里。同样如果OC中所使用的swift类,只需要Clean一把,再编就可以了,但不要忘了导入SwiftModule-swift.h哦(名称自取,但-swift.h是固定的),另外还有一个需要读者注意的。

    注:

    凡是用Swift写的类,如果不继成自NSObject或NSObject 的派生类,哪么编译后将不会生成对应的转换类。从而使得OC 中找不到相应的声明。

    如我的例子中 class Act 这样不会被编译到SwiftModule-swift.h中,但写为 class Act : NSObject,就可以编译出相应的声明。另外可以使用@objc加以声明,但这个还是一样,类最好继承NSObject下来。就像下面:

     

     

    1. import Foundation  
    2.   
    3. @objc(Act)  
    4.   
    5. class Act   
    6. {  
    7.     func hasAct(tag:Int) -> String  
    8.     {  
    9.         switch (tag)  
    10.         {  
    11.         case 1:return "Movie"  
    12.         case 2:return "CCTV"  
    13.         case 3:return "Sport TV"  
    14.         default:return "Area TV"  
    15.         }  
    16.     }  
    17.   
    18.     @objc(init)//原本以为加上这个alloc就可以找到,但不行的。。。  
    19.     init()  
    20.     {  
    21.         println("act constructor is called.")  
    22.     }  
    23.       
    24.     deinit  
    25.     {  
    26.         println("act destroyed is called.")  
    27.     }  
    28. }  

    但是在使用时你就会发现

     

            act = [[Act alloc]init]; //报错,找不到alloc,因此建议大家还是继承NSObject.

    展开全文
  • SwiftOC混编

    千次阅读 2018-08-10 20:04:33
    一、OC调用swift文件  在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,如下图:    点确定创建桥接文件,Xcode会自动创建一个桥接文件,其名字为:工程名-Bridging-Header.h ...

    一、OC调用Swift文件

    在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,如下图:

    11

    点确定创建桥接文件,Xcode会自动创建一个桥接文件,其名字为:工程名-Bridging-Header.h

    12

    这个桥接文件是 swift 调用OC文件的时候用的

    1、配置

    进入TARGETS ->Build Settings -> Packaging 中设置Defines Module为YES。
    13

    设置Product Module Name (如:OCBrigdeSwiftDemo),也可以不设置,默认为工程的名字。这个在后面会用到。
    14

    2、 创建xxx.swift文件类:

    
    import UIKit
    
    class Tools: NSObject {
    
        var address:String
    
        var gender:String
    
    
        init(address:String,gender:String) {
    
            self.address = address
    
            self.gender = gender
    
        }
    
    
        func methodprintOC(){
    
            print("msg:\(self.address) + \(self.gender)")
    
        }
    
    }
    
    

    3、文件导入

    在OC需要用到的swift文件中 导入文件 “Product Module Name -Swift.h” 因为 Product Module Name 默认是工程的名字。所以直接导入 #import “工程名-Swift.h”,【该文件没有提示、是能手写补充】

    
    #import "ViewController.h"
    
    #import "OCBrigdeSwiftDemo-Swift.h"
    
    

    ###4.方法调用

    记着写完先command+B编译一下,如果没有报错就可以在OC文件调用swift中的类了

    
    #import "ViewController.h"
    
    #import "OCBrigdeSwiftDemo-Swift.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
    
        [super viewDidLoad];
    
        [self ocBridgeSwift];
    
    }
    
    #pragma mark - method
    
    ///oc初始化调用swift方法
    
    -(void)ocBridgeSwift{
    
        Tools *tools = [[Tools alloc]initWithAddress:@"地址" gender:@"性别"];
    
        [tools methodprintOC];
    
    }
    
    - (void)didReceiveMemoryWarning {
    
        [super didReceiveMemoryWarning];
    
    }
    
    @end
    
    

    二、Swift调用OC文件

    • 只要把swift需要用到的OC文件的头文件放到桥接文件里 工程名-Bridging-Header.h

    示例:

    ####1、创建一个oc的文件(OTools)

    
    +(void)logWithAddress:(NSString *)address gender:(NSString *)gender{
    
        NSLog(@"打印日志:\n 地址:%@ 性别:%@",address,gender);
    
    }
    
    -(void)logByAddress:(NSString *)address gender:(NSString *)gender{
    
        [OTools logWithAddress:address gender:gender];
    
    }
    
    

    ####2、在 xxx-Header.h文件中添加头文件

    
    #import "OTools.h"
    
    

    ####3、调用

    command+s [混编时,每次代码更新都要保存,不然无法调用]保存文件

    
        override func viewDidLoad() {
    
            super.viewDidLoad()
    
            self.initBaseData();
    
        }
    
    
        func initBaseData(){
    
            OTools .log(withAddress: "北京市", gender: "男");
    
            let tools = OTools.init()
    
            tools.log(byAddress: "福建省", gender: "女");
    
        }
    
    

    ##三、注意和总结

    注意:

    1、OC项目在导入swift文件前 先按照系统提示创建桥接文件,

    2、在 targets -> Build Settings -> Packaging 中设置Defines Module 为YES

    3、OC中调用swift文件需要导入”工程名 -Swift.h"

    (这个是build Setting -> Packaging->Product Module Name 的名字,而这个属性默认是工程的名字)
    

    4、每次写完记得command + B 编译 一下

    5、swift项目 引用OC文件也需要创建 桥接文件,在这个桥接文件中导入OC文件的头文件

    6、桥接文件只有一个,作用只是为了 swift 引用OC文件,OC引用swift 文件虽然也需要创建桥接文件,但是不需要在桥接文件中 导入swift文件

    7、如果一个项目既有OC引用swift也有swift引用OC,就先设置OC调用swift文件,在桥接文件 导入OC文件,OC可以定义PCH文件导入”工程名 -Swift.h"

    ##四、自定义桥接文件

    如果不用Xcode提示创建桥接文件也可以自定义一个桥接文件

    1、使用 Header File 创建,把里面的内容清空。

    2、这文件名可以自定义, 一般还是用工程名-Bridging-Header.h。

    3、然后在 Build Setting -> Bridging Header 中 设置Objective-C Bridging Header 为自定义的桥接文件相对于工程的绝对路径,也就是项目总文件夹的路径,如果在第一层,就直接写自定义的桥接文件的名file.h,如果在下一层,文件夹/桥接文件 app/file.h
    15

    4、最后进入TARGETS ->Build Settings -> Packaging 中设置Defines Module为YES

    展开全文
  • swiftOC混编(创建混编工程)

    千次阅读 2016-01-26 00:17:41
    就在15年WWDC上更是把Swift进行了开源,瞬间star就开始不断飙升,截止今天(16年1月25)已经达到26059个star【源码请点击这里】,而且每天还都在不断增长,而且每天都会有Pull Requests。这足以说明全球开发者对这门...

    原创文章转载请注明出处。

    背景


    Swift语言自推出以来苹果官方就开始努力开始推这门新语言。就在15年WWDC上更是把Swift进行了开源,瞬间star就开始不断飙升,截止今天(16年1月25)已经达到26059个star【源码请点击这里】,而且每天还都在不断增长,而且每天都会有Pull Requests。这足以说明全球开发者对这门语言的认可度。虽然现在在有些地方还不够完善,但是相信会在未来的某一天,Swift语言会成为一门主流开发语言。

    混合开发


    扯淡结束,进入正题。

    本文所使用的Xcode版本为7.1。

    之前大家都熟悉了很久的OC语言,也许也开始尝试写一些Swift,但是这两个语言怎么进行混编呢?下面就说一下。Swift和OC的混编没有做的C与OC那样高度融合。

    新建OC工程


    新建工程不再多说,相信大家都很熟悉了,这里我们先拿OC项目中引用Swift来进行说明。

    新建工程名为MixDemo,新建完工程以后可以不用进行任何修改和配置。我们先新建一个Swift类,新建方式与之前一样,只是在新建的时候注意选择语言为Swift。

    创建Swift文件

    新建Swift类名为SwiftDemo。点Create以后会出现这样一个弹出提示:

    创建桥接文件

    这是因为Swift和OC进行混编的时候需要一个中间的桥接文件。桥接文件中需要导入Swift类中引用到的OC类的头文件。

    点击Create Bridging Header,工程中会多出两个文件,一个是SwiftDemo.swift文件和桥接文件MixDemo-Bridging-Header.h。新建完以后工程结构如图:

    工程结构

    简单的方法调用


    OC调用Swift


    新建完成Swift类以后,我们来Build一下工程,perfect模拟器跑的很欢快,虽然什么代码也没有写。

    下面我们在SwiftDemo.swift文件里写点东西。代码如下:

    swift文件代码

    @objc(SwiftDemo)
    
    public class SwiftDemo : NSObject {
    
        public func logMe() {
            print("log me");
        }
    
    }
    

    这里注意一下:

    • 在Swift类中最好加@objc进行说明。因为如果不是继成自NSObject或NSObject的派生类,编译后将不会生成对应的转换类。在OC中也就找不到相应的声明,从而导致无法调用。

    • 类和方法要声明成public才能在OC中调用到。如果你已经看过Swift,相信你对这个应该不陌生。

    • 当你在Swift里添加一个public的类或者方法以后需要重新编译才会在OC端调用到。因为Swift需要重新编译转化为OC的“中间文件”,在“中间文件”中有了该类或者改方法OC才可以调用。关于这个“中间文件”下面会进行说明。

    现在我们回到ViewController.m文件里。在OC文件中如果想要调用Swift类的方法的话需要导入一个头文件。该头文件在工程中不可见,默认格式为xxx-Swift.h,其中xxx为项目名。对于我们这个项目来说,也就是MixDemo-Swift.h

    import该头文件以后我们就可以调用Swift的方法了。比如调用刚才我们写的SwiftDemo里面的logMe方法。上面提到修改Swift文件如果是public的话需要重新编译一下,好,那我们编译一下。perfect,还是没问题,继续。

    这时候你就可以写你很熟悉的OC代码了。我们在viewDidLoad里添加代码如下:

    SwiftDemo* demo = [[SwiftDemo alloc] init];
    [demo logMe];
    

    这时候你就会发现,当你写这段代码的时候,Xcode已经开始有提示了。是不是很神奇?

    下面我们来看一下这个神秘的MixDemo-Swift.h文件。按住command键然后点击鼠标左键,进入该文件。直接滑动到该文件的最下面,你就会发现一件很有意思的事情:Xcode的提示并不是直接读取的Swift,而是由于这个“中间文件”。这个中间文件里有我们刚写的SwiftDemo和logMe函数。

    中间文件代码

    思考:如果把objc括号里改成其他名称是否可以?修改以后再回到这个文件观察有什么变化。

    然后Build一下,你会在控制台上看到打印了”log me”,这说明OC调用了我们刚才写的Swift的LogMe函数。

    Swift调用OC


    Swift调用OC的时候需要在MixDemo-Bridging-Header.h文件中导入Swift会引用到的CO类的头文件。

    首先我们在ViewController.h头文件中声明一个函数:

    - (void) logYou;
    

    然后在实现文件中简单些一下实现:

    - (void)logYou {
        NSLog(@"log you");
    }
    

    然后我们在MixDemo-Bridging-Header.h文件中#import “ViewController.h”文件,command+s保存一下当前的编辑。

    然后回到SwiftDemo.swift文件中,在LogMe函数里我们调用一下OC的logYou。

    所以我们现在的逻辑是在OC的viewDidLoad中实例化SwiftDemo然后调用logMe,然后在SwiftDemo里的logMe里面实例化ViewController然后调用它的logYou。logMe代码如下:

    public func logMe() {
        print("log me");
    
        let vc = ViewController()
        vc.logYou()
    }
    

    然后再跑一下工程。两句话都打印了,很好。

    但是,这个MixDemo-Bridging-Header.h文件到底是个什么呢?

    工程相关配置


    点击工程target然后点击Build Settings,然后在搜索框里输入swift,就会出现和Swift相关的配置信息,如图:

    修改工程配置

    你会在Object-C Bridging Header项后面发现一个熟悉的文件MixDemo-Bridging-Header.h。这个就是配置这个“中间文件”的地方。所以,现在你知道了这个文件配置的位置,以后你就可以自己任意修改成你喜欢的文件名字了,记得修改时文件路径问题,还有记得工程中要有与之对应的文件。

    此外,一般情况下还需要注意修改的配置信息为:

    结语


    本文Demo可以在【这里】下载到

    创建OC和Swift混编工程就说到这里。后面会说一下Swift怎么调用OC的类方法(静态方法)以及变参方法点击这里查看文章内容

    —End—

    展开全文
  • Swift和OC混编

    2019-01-07 17:51:48
    Swift和OC混编,OC项目下Swift和OC的互相调用,Swift项目下Swift和OC的相互调用!
  • Swift Swift和OC混编

    千次阅读 2016-05-02 16:31:03
    难得的五一小长假,就有空简单的谢谢Swift和OC的混合编程的Demo。1.新建一个空的Swift项目 注意语言选择Swift。2.新建一个OC的控制器 注意语言选择OC。3.这一步很重要 一定要点击红框中的按钮。4.设置桥接文件...

    接触Swift有一段时间了,但是一直没有试过混合编程。难得的五一小长假,就有空简单的写写Swift和OC的混合编程的Demo。

    1.新建一个空的Swift项目

    这里写图片描述
    注意语言选择Swift。

    2.新建一个OC的控制器

    这里写图片描述
    注意语言选择OC。

    3.这一步很重要

    这里写图片描述
    一定要点击红框中的按钮。

    4.设置桥接文件路径

    这里写图片描述
    TARGETS–>Build Settings–>Objective-C Bridging Header
    这里的路径在上面的第三步里面创建桥接文件的时候,Xcode就自动帮我们设置了。

    5.在桥接文件中添加头文件

    #import "OCViewController.h"

    Demo结构

    这里写图片描述

    编写代码

    接下来就是在.swift文件里面按照Swift的语法写代码在OC文件里面按照OC的语法代码就可了。
    ViewController.swift

    //MARK:跳转到下一页
        @IBAction func nextBtnClick(sender: AnyObject) {
            let ocVC = OCViewController()
            ocVC.showText = "Swift-OC"
            self.presentViewController(ocVC, animated: true) { 
    
            }
        }

    OCViewController.m

    - (void)viewDidLoad {
        [super viewDidLoad];
        // 设置按钮标题
        [self.backButton setTitle:self.showText forState:UIControlStateNormal];
        // Do any additional setup after loading the view from its nib.
    }
    /**
     *  返回上一个页面
     *
     *  @param sender sender description
     */
    - (IBAction)backBtnClick:(UIButton *)sender {
        [self dismissViewControllerAnimated:YES completion:nil];
    }

    控件都是使用IB拉的所以,文件里面没有控件的创建过程。
    代码下载地址:Swift-OC

    展开全文
  • Swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好...这里主要介绍swift类中调用OC方法和swift类中调用C函数以及OC类中调用swift的函数这三种类型的混编.
  • iOS开发中实现OC和Swift混编

    千次阅读 2018-04-18 17:10:08
    原有的项目都是使用OC写的,既然要在原有项目中引入swift文件首先就要实现OC和swift混编设置。 混编设置: 在OC项目中创建一个swift文件的时候首先Xcode会弹出一个提示框: 这时我们要选择“Create ...
  • iOS开发之OC Swift混编

    千次阅读 2018-08-17 17:53:26
    相信很多开发者在开发过程中,使用别人封装好的三方框架,但由于三方框架的开发语言(OC或者Swift)与现有工程的开发语言不一致,导致无法直接使用,那么对于混编来说,是不二的选择。 Swift项目使用OC框架   1...
  • oc和swift混编

    2019-02-27 20:45:40
    这是需要做oc和swift混编需要用到的,现在oc的发展变慢,swift成长很快,需要这种技术的请下载,如果不是做ios的请慎重
  • 关于OC和Swift混编的基本使用

    千次阅读 2016-06-14 16:42:28
    概述 Swift的设计的初衷就是摆脱...随着Swift的改进及Swift开源项目剧增,越来越多的Objective-C工程开始使用Swift混编,不管是在基于Swift工程中或者Objective-C工程中,SwiftObjective-C文件都可以无缝结合。本文
  • OC和Swift混编Pod引入第三方库的问题 问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是...
  • OC和swift混编包太大

    千次阅读 2018-01-29 17:29:59
    OC和swift混编包太大问题
  • oc和swift混编(方法相互调用)

    千次阅读 2019-02-27 20:49:18
    OC和Swift是苹果爸爸的原生语言,Swift代替OC的成本太高,需要过度时间,但是现在的Swift的成长很快,在这个矛盾的时间,我们必须混编了。 1、创建一个新的工程 ,工程的名字叫OCAndSwiftDemo。 2、配置工程...
  • OCSwift混编

    2018-07-19 11:31:59
    首先要说明的是,混编时,比如工程原先用oc,你突然创建了一个swift文件,那么xcode会弹出一个是否...下边说说两种混编方式   1.OC里调用swift: xcode会隐形生成类似类似 “工程名-Swift.h”的文件,直接#imp...
  • iOS之swift和OC混编、桥接

    千次阅读 2018-01-26 11:55:27
    参考:https://www.cnblogs.com/mazhiqiang/p/5557002.html=============swift中...在swift项目中创建一个OC文件的时候,Xcode 会提示创建一个桥接文件 点确定创建桥接文件,Xcode会自动创建一个桥接文件名字:工...
  • OC Swift 混编

    2017-08-30 13:29:16
    首先承认我落后了,到今天才开始在项目里用swift,而且还不是全部的用,只是oc和swift混编,因为实在是进入项目的时候框架已经用oc搭好了啊啊啊啊啊。只能退而求其次,混编了,大致根据百度到的方法试了一下,不是很...
  • OCSwift混编的三种情况: 1、OC工程中写入Swift文件并随手创建桥接文件 2、Swift工程中写入OC文件并随手创建桥接文件 3、混编时舍弃创建桥接文件,手动再创建一遍的方法
  • WWDC推出了SwiftUI、Combine,仅Swift可用~为了能顺利的也吃上SwiftUI,我也打算将自己的项目先从OC慢慢迁移到Swift,所以~一起从混编开始! 创建Swift的view 正常创建文件,语言选swift 创建Bridging Header 上...
  • swift oc混编 找不到头文件等问题

    千次阅读 2018-05-03 10:42:49
    1 swift项目,找不到第三方文件,exp:AFN.h找不到,要修改build settings 里的User header custome search paths ,改成${SRCROOT},选择recursive.2 oc项目找不到swift文件,要引入工程名-swift.h文件。A.设置...
  • swift oc混编 打包framwork

    千次阅读 2017-05-06 18:47:20
    最近由于项目需求需要使用Swift做开发,但之前的好多有用的东西都是使用OC写的,鉴于这种情况最好的方式当然是使用swift重写,但这样的工作量太大,而且不能保证功能的稳定性,所以自己就尝试的使用Framework来嵌入...

空空如也

1 2 3 4 5 ... 20
收藏数 1,695
精华内容 678
热门标签
关键字:

swift和oc混编