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

前言

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

实现

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

Swift与OC混编-Swift中调用OC方法_第1张图片

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

Swift与OC混编-Swift中调用OC方法_第2张图片

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


Swift与OC混编-Swift中调用OC方法_第3张图片

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


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

Swift与OC混编-Swift中调用OC方法_第4张图片

4.引用OC方法

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

#import 

@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()
    }


}

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


Swift与OC混编-Swift中调用OC方法_第5张图片

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

你可能感兴趣的:(Swift与OC混编-Swift中调用OC方法)