oc与swift混编

作者: 架构师的一小步 | 来源:发表于2018-12-04 11:37 被阅读0次

互相引用的操作

工程用oc实现引用swift

1.添加swift文件

import Foundation

class SwiftClass: NSObject {
//这里是关键:在oc中调用foo方法需要用@objc定义一下foo函数,否则会报错
    @objc(foo)  
    func foo(){
        print("Hello Swift")
    }
}

2.将prefix Header 改成YES(这里是是否预编译文件的意思)


3.在需要调用swift的oc类中

#import "ObjTest-Swift.h" //#import "{productname}-Swift.h" 项目名称-Swift
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
  //这里调用swift类
    SwiftClass *obj=[SwiftClass new];
  //调用里面的方法
    [obj foo];
    // Do any additional setup after loading the view, typically from a nib.
}

工程用swift实现引用oc

1.添加oc文件

//和正常定义oc文件一样
#import "ObjectClass.h"

@implementation ObjectClass
- (NSString*)foo
{
    return @"tianxiafengshen";
}
@end

2.在SwiftTest-Bridging-Header.h中添加自己创建的oc类, 这个文件是创建oc类默认点击生成的

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import "ObjectClass.h"

3.在swift文件中调用oc类

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let label = UILabel(frame: CGRect(x: 0, y: 0, width:self.view.bounds.width, height:240))
        label.textAlignment=NSTextAlignment.center
        
        
        //这里调用了oc的方法
        label.text=ObjectClass().foo()
        //也可以将ObjectClass().foo()拆分
         let obj=ObjectClass()
        label.text=obj .foo()

        self.view.addSubview(label)

        
       
        
        
        // Do any additional setup after loading the view, typically from a nib.
    }


}

工程用oc实现引入swift第三方库

1.pod 方式直接导入或者直接将framework直接拖入
2.Go to your target's settings, hit the "+" under the "Embedded Binaries" section, and select the Charts.framework(在target下的Embedded Binaries下点击+,将framework加入其中)
3.在setting中(Xcode 8.1 and earlier) Under "Build Options", mark "Embedded Content Contains Swift Code"(xcode8.1之前,设置Embedded Content Contains Swift Code为YES)
(Xcode 8.2+) Under "Build Options", mark "Always Embed Swift Standard Libraries"(xcode8.2之后,设置Always Embed Swift Standard Libraries为YES)
4.在要使用的类中:@import Charts;    进行加载

工程用swift引入第三方库直接import这个第三方swift库就可以直接使用

相关文章

  • Swift

    混编 15、OC与Swift的混编_海森堡_lichangan的博客-CSDN博客_oc swift 混编[htt...

  • oc Swift 混编

    oc Swift 混编 oc 项目 混编Swift1.1 oc 调用 Swift 的类 和 方法步骤: ...

  • OC与Swift混编 / Mix & Match

    OC与Swift混编 / Mix & Match OC in Swift 通过Header File创建Bridg...

  • 自制Framework:swift与OC混编,自定义module

    为何要swift与oc混编 在ios开发中,swift与oc的混编,几乎是不可避免的。2014年,Apple在开发...

  • OC与Swift混编

    OC与Swift混编 一.objectivec与Swift相互调用对照 OC interface文件如下 转换后对...

  • Swift与OC混编

    Swift与OC混编:OC文件使用Swift文件时,引入#import (项目名字)-Swift.h。(系统帮我们...

  • iOS开发之一Swift与OC混编

    Swift与OC混编:OC文件使用Swift文件时,引入#import (项目名字)-Swift.h。(系统帮我们...

  • OC和Swift混编手动创建桥接文件及命名空间

    Obj-C混编Swift && Swift混编Obj-C Swift引用OC实现通过桥接头文件,OC引用Swift...

  • OC和Swift混编一

    OC工程下混编 Swift工程下混编请查看OC和Swift混编二 1.建一个OC工程命名为OCTestSwift ...

  • swift与OC混编

    swift与OC混编的总结 现在的swift开发多数会用到混编。swift和oc是通过桥接文件来实现的。无论是在o...

网友评论

    本文标题:oc与swift混编

    本文链接:https://www.haomeiwen.com/subject/lclmcqtx.html