zoukankan      html  css  js  c++  java
  • 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
    

       
       
       

    友情链接:

    技术博客        简书主页

  • 相关阅读:
    loj#6433. 「PKUSC2018」最大前缀和(状压dp)
    PKUWC2019游记
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
    7. Reverse Integer
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/tig666666/p/9205184.html
Copyright © 2011-2022 走看看