美文网首页
Swift与OC混编-Swift中调用OC方法

Swift与OC混编-Swift中调用OC方法

作者: 神SKY | 来源:发表于2017-07-06 14:28 被阅读287次

    前言

           在开发过程中有时候会遇到Swift和OC混编的情况,这篇文章就来简单的实现Swift调用OC的方法。

    实现

    1.新建一个语言为Swift的工程文件

    2.在工程文件中新建一个OC文件


           这个时候回出现一个提示框,点击"Create Bridging Header"。(注:这个关系到引用OC文件)



           点完之后会创建一个header.h的文件,这个文件是用来导入OC的文件的


    3.在header.h文件中导入OC的头文件

    4.引用OC方法

           OC的.h文件,这里有无参数的方法,有参数的方法,回调的方法,有参数回调的方法和多参数回调的方法,如下:

    #import <Foundation/Foundation.h>
    
    @interface OCFile : NSObject
    
    - (void)sayHello;
    
    - (void)saySomething:(NSString *)str;
    
    - (void)sayCallback:(void(^)(NSString *))callback;
    
    - (void)saySomething:(NSString *)str callback:(void(^)(NSString *))callback;
    
    - (void)saySomething1:(NSString *)str1 Something2:(NSString *)str2 callback:(void(^)(NSString *))callback;
    @end
    

            OC的m文件如下:

    #import "OCFile.h"
    
    @implementation OCFile
    
    - (void)sayHello
    {
        NSLog(@"Hello World");
    }
    
    - (void)saySomething:(NSString *)str
    {
        NSLog(@"%@",str);
    }
    
    - (void)sayCallback:(void (^)(NSString *))callback
    {
        if (callback) {
            callback(@"Hello World 3");
        }
    }
    
    - (void)saySomething:(NSString *)str callback:(void (^)(NSString *))callback
    {
        if (callback) {
            callback(str);
        }
    }
    
    - (void)saySomething1:(NSString *)str1 Something2:(NSString *)str2 callback:(void (^)(NSString *))callback
    {
        if (callback) {
            callback([NSString stringWithFormat:@"%@ %@",str1,str2]);
        }
    }
    @end
    

           在Swift中的引用方式如下:

    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            let oc = OCFile();
            oc.sayHello();
            
            oc.saySomething("Hello World 2");
            
            oc.sayCallback { (str) in
                print(str!);
            }
            
            oc.saySomething("Hello World 4") { (str) in
                print(str!);
            }
            
            oc.saySomething1("Hello World", something2: "5") { (str) in
                print(str!);
            }
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
    
    }
    

           程序跑起来之后就可以看到如下打印:


    希望这篇文章对各位看官有所帮助,Demo下载地址:Demo

    相关文章

      网友评论

          本文标题:Swift与OC混编-Swift中调用OC方法

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