Objective和Swift混编 官方解释

Objective和Swift混编 官方解释

Apple Official Documentation Explanation

重点

这里写图片描述

  • 1.在Objective-C代码里使用Swift,则在Objective-C代码里使用#import "ProductModuleName-Swift.h" 即可
  • 2.在Swift代码里使用Objective-C,则在Objective-C的桥接文件 ProductModuleName-bridgeing-header.h 里,导入你要在Swift里使用的OC类


1、简介

Swift兼容Objective-C,所以允许开发者在创建的项目里,同时包含两种语言编写的文件。这个特性被Apple称为:Mix and Match(混合搭配)。也就是说在一个已存在的Objective-C的项目中,可以使用最新的Swift语言的各种特性,无缝的包含到OC项目中。

2、Mix and Match (混合搭配)

无论你的项目一开始是Objective-C还是Swift,那Objective-C和Swift都是可以同时存在一个项目中,所以你可以直接的在一个已存在的项目中添加文件。创建一个混合语言的app的流程和你创建一个Swift或者Objective-C语言的app的流程一样的直接、简单。

在mixed-language target里的使用过程有细微差别,这取决于是否是编写一个app或者framework。通常来讲,就是在同一个项目里直接import model,那这个过程如下图描述。

这里写图片描述


3.Swift代码和Objective-C代码互相使用并导入

首先,他们要在同一个target里;然后,如果需要在Swift代码里使用Objective-C,则非常依赖一个Objective-C的桥接文件,这个桥接文件里就是写一些#import 'samplecode.h' 文件,这些文件里的类就可以在Swift中直接使用了。

  • 当你在一个OC项目里创建一个Swift文件时,则Xcode会提示创建一个桥接文件,文件名为:项目名称-Bridging-Header.h 文件。在Swift里使用OC文件,不需要在Swift文件里导入任何头文件,但是在项目名称-Bridging-Header.h 文件里需要 #import samplecode.h ,表示该文件已经都向Swift暴露。

  • 当你在一个Swift项目里创建OC文件时,则Xcode会隐式的创建一个项目名称-Swift.h 文件,则在OC文件里使用Swift文件时,需要在OC文件里导入 项目名称-Swift.h 文件,该文件是隐式创建的,因为一个Swift文件会被自动生成OC的 .h 文件和 .m 文件

Objective-C Bridging Header


4.导入文件到framework外部

从Objective-C导入到 Swift

import FrameworkName

从Swift导入到 Objective-C

@import FrameworkName;

5. 导入文件到framework内部

从Objective-C导入到 Swift,
不需要手动往umbrella.h文件里 import,生成时会被自动加上要 import header.h,所以Swift可以直接使用OC的类

ModuleName-umbrella.h

从Swift导入到Objective-C
`

import

一些宏

把Swift类名暴露给Obejective-C,可以是

@objc (BDUserProfileModel)
public class UserProfileModel: NSObject {
}

然后OC可以用 ZHUserProfileModel

把Objective-C暴露给Swift,可以是:

NS_SWIFT_NAME(UserProfileListViewController)
@interface BDUserProfileListViewController : UIViewController 
@end

然后Swift用 UserProfileListViewController

猜你喜欢

转载自blog.csdn.net/u013538542/article/details/78754425
今日推荐