iOS 开发iOS学习牛叉的demo

swift和OC的互相调用

2017-06-02  本文已影响604人  Better_奔

swift工程中调用OC语言的库

创建swift工程

image.png

情况1️⃣(自动创建桥接文件的情况)

创建一个OC的语言文件

image.png

系统提示是否需要一个桥接头文件,因为系统的暂时还没有。选择创建。

桥接头文件

此时自动创建了桥接头文件

image.png

(但是其中文件是空的。)

在其中引入需要桥接的OC文件。

image.png

(使用两种引入都行,选择其中一种)

可以在swift中直接调用了

class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        let obj : NewObject=NewObject.init()
        return true
    }

(这样创建桥接文件,系统里已经帮我们设置好了路径。检查这个路径:工程->TARGETS, 在输入框里输入bridging,你会看桥接路径)

情况2️⃣(手动创建桥接文件的情况)

手动创建一个.h文件(名字固定)

创建一个,Command+NiOS->Source->Header File文件。这个文件的命名规则最好是:"项目名+bridging+Header.h"

image.png

手动设置路劲

Swift Compiler - Code Generation ->Objective-C Bridging Header,填写“项目名/桥接文件名”。

也可以直接将文件拖入。

OC工程中调用swift语言

创建一个OC项目

image.png

创建swift文件

image.png

(此时依旧会问是否创建头文件)

在OC中使用swift只需要引入头文件即可

#import "AppDelegate.h"
#import "OC中调用swift-swift.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    NewObject*obj=[[NewObject alloc]init];
    return YES;
}

#import "OC中调用swift-swift.h"其中OC中调用swift是项目名字-Swift.h是固定写法。(其中项目名中如果有中划线-import变为下划线_)

上一篇下一篇

猜你喜欢

热点阅读