美文网首页
OC和Swift混编二

OC和Swift混编二

作者: iOS扫地僧 | 来源:发表于2018-03-09 14:55 被阅读0次

    Swift工程下混编

    OC工程下混编请查看OC和Swift混编一

    1.建一个Swift工程命名为SwiftTestOC


    image.png

    2.新建一个Swift文件命名为SwiftClass.swift

    import UIKit
    
    class SwiftClass: NSObject {
        
        @objc func test3() {
            print("OC调用Swift方法")
        }
        
        func test4() {
            print("测试不加@objc的方法")
        }
    }
    

    3.新建一个OC文件命名为OCClass,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名-Bridging-Header.h”


    image.png
    image.png

    将OC文件的头文件加入到“工程名-Bridging-Header.h”


    image.png

    OCClass代码

    #import <Foundation/Foundation.h>
    
    @interface OCClass : NSObject
    
    - (void)test1;
    - (void)test2;
    
    @end
    
    #import "OCClass.h"
    //系统生成头文件(command+鼠标左键可点进去查看)
    #import "SwiftTestOC-Swift.h"
    
    @implementation OCClass
    
    - (void)test1{
        NSLog(@"Swift调用OC方法");
    }
    
    //OC调用Swift方法
    - (void)test2{
        SwiftClass *sc = [[SwiftClass alloc] init];//创建swift对象
        //OC调用swift方法
        [sc test3];
        //测试swift不加@objc的方法(不加@objc调不起方法)
        //[sc test4];
    }
    
    @end
    

    4.在swift文件中调用OC(ViewController代码)

    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            let funOC = OCClass()
            //swift调用OC方法
            funOC.test1()
            //调用此方法,以便于OC调起swift文件方法
            funOC.test2()
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
    }
    

    总结: 在Swift工程中实现了互相调用功能
    ViewController(Swift)--->OCClass(OC)--->SwiftClass(Swift)

    相关文章

      网友评论

          本文标题:OC和Swift混编二

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