• Swift与OC的相互调用


    Swift经过四年的发展已经趋于成熟,是时候学一下了,感谢公司swift大佬的不吝赐教。心有所感记录一下,如有不足欢迎指正批评。

    新建swift项目

    新建swift项目

    新建Swift、OC类文件

    可在新建OC文件时,建立桥接头文件,也可以自己新建桥接头文件。
    新建Swift、OC类文件

    如果没有创建桥接文件,

    1.创建头文件: HeaderFileForSwiftAndOC.h
    2.找到路径: 项目target -> Bulid Settings -> Objective-C Bridging Header
    3.填写:$(SWIFT_MODULE_NAME)/HeaderFileForSwiftAndOC.h

    在swift文件与OC文件中填写代码

    OC

    OCClass.h

    #import <Foundation/Foundation.h>
    
    @interface OCClass : NSObject
    - (void)ocFunction:(NSString *)str;
    @end
    

    OCClass.m

    #import "OCClass.h"
    #import "SwiftAndOC-Swift.h"//新建swift项目时默认创建,包含了所有swift文件引用
    @implementation OCClass
    - (void)ocFunction:(NSString *)str{
        NSLog(@"
    oc func par - str = %@",str);
        SwiftObj *swiftObj = [[SwiftObj alloc]init];
        [swiftObj swiftFuncWithPar:@"OC -> swift"];
    }
    @end
    

    Swift

    ViewController.swift

    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            let ocObj = OCClass();
            ocObj.ocFunction("swift -> OC");
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }
    

    SwiftObj.swift

    import UIKit
    
    class SwiftObj: NSObject {
        @objc func swiftFunc(par:String){//@objc 很重要 必须写 不然oc调用时找不到该方法
            print("swift func par = (par)");
        }
    }
    

    运行项目

    控制器打印

    2018-06-20 18:01:19.346937+0800 SwiftAndOC[6803:243390] 
    oc func par  = swift -> OC
    swift func par = OC -> swift
    

       
       
       

    友情链接:

    技术博客        简书主页

  • 相关阅读:
    Java [Leetcode 319]Bulb Switcher
    Java [Leetcode 122]Best Time to Buy and Sell Stock II
    谱聚类算法
    Java [Leetcode 238]Product of Array Except Self
    Java [Leetcode 260]Single Number III
    X++ StrFix方法
    D365 FO第三方访问https证书问题
    D365 FO 使用.NET DLL
    D365 FO第三方集成(四)---客户端调用
    D365 FO第三方集成(三)---服务实现
  • 原文地址:https://www.cnblogs.com/tig666666/p/9205184.html
Copyright © 2020-2023  润新知