2016-01-18 12:29:54 Felicity294250051 阅读数 736
  • iOS/Swift/OC/Objective-C/Xcode/0基础/入门

    这是一门快速入门iOS开发的课程,目的是让大家快速学会,iOS开发环境搭建,和iOS一些基础知识,最后完成一个小项目。 项目信息 提供完整的Git提交历史,和每节视频一一对应,目前有41次提交,355行注释,271行代码(不包含可视化布局文件,纯Swift和Objective-C代码)。

    2904 人正在学习 去看看 任苹蜻

本文主要介绍如何在Swift项目中使用OC的文件以及在OC项目中使用Swift文件

一、在Swift项目中使用OC文件

① 首先提供最原始的方法,这也是本质:

01 创建一个桥接文件,也就是一个OC的 .h文件,一般来说以项目名-Bridging-Header.h 命名

02 将需要导入到Swift项目中的OC文件的头文件导入到桥接文件

03 配置桥接文件(和OC中配置.pch文件很类似):


我们往里面写的是相对路径,默认是找到项目可执行文件的一层,从这层开始往下一直填写到桥接文件的一层。


② 简便方法

01 导入/ 创建 OC文件,导入/ 创建 OC文件的同时,会提示创建桥接文件,此时点击创建,会自动帮我们完成创建、配置桥接文件的工作

02 将需要在Swift项目中使用的OC文件的头文件导入到桥接文件


需要特别注意:如果是用CocoaPods导入的OC框架,我们直接将主头文件导入到所需的项目中即可,不需要为其配置桥接文件。


二、在OC项目中使用Swift文件

这个过程更加的简单。

01 将Swift文件内需要在OC项目中使用的 类/ 属性/ 方法 用public修饰,没有修饰的 类/ 属性/ 方法 在外部的OC文件中是无法使用的

02 在需要使用Swift文件的OC文件内导入头文件 #import "项目名-Swift.h"


需要特别注意:项目名称只需用大小写字母和数字,用其他特殊符号易出错

2019-02-26 14:16:29 wei78008023 阅读数 1525
  • iOS/Swift/OC/Objective-C/Xcode/0基础/入门

    这是一门快速入门iOS开发的课程,目的是让大家快速学会,iOS开发环境搭建,和iOS一些基础知识,最后完成一个小项目。 项目信息 提供完整的Git提交历史,和每节视频一一对应,目前有41次提交,355行注释,271行代码(不包含可视化布局文件,纯Swift和Objective-C代码)。

    2904 人正在学习 去看看 任苹蜻

之前在开发是遇到了在OC文件中调用Swift对象的变量调用不到的问题,这里总结一下:

1.首先我们一个Swift项目TestProject。

2.建立一个Swift的文件继承自NSObject名字为SwiftFile.swift,并声明一个字符串变量swiftName。

import UIKit

class SwiftFile: NSObject {

    var swiftName = ""
}

3.建立一个OC的文件ObjectFile,并导入“HFSTeacher-Swift.h”(OC想要调用Swift需要导入此文件)如何配置以及导入原因可以自行查询。

#import "ObjectFile.h"
#import "HFSTeacher-Swift.h"

@implementation ObjectFile

-(void)oneMethod
{
    SwiftFile *swiftFile = [[SwiftFile alloc]init];
    NSLog(@"%@",swiftFile.swiftName);
}

@end

这个时候会报错,说在SwiftFile中找不到swiftName成员。

4.这个时候需要在SwiftFile.swift中加入一个声明@objcMembers以表示文件中成员可以被OC调用:

import UIKit

@objcMembers
class SwiftFile: NSObject {

    var swiftName = ""
}

5.如此则大功告成!

2015-10-08 11:23:27 u011449317 阅读数 1147
  • iOS/Swift/OC/Objective-C/Xcode/0基础/入门

    这是一门快速入门iOS开发的课程,目的是让大家快速学会,iOS开发环境搭建,和iOS一些基础知识,最后完成一个小项目。 项目信息 提供完整的Git提交历史,和每节视频一一对应,目前有41次提交,355行注释,271行代码(不包含可视化布局文件,纯Swift和Objective-C代码)。

    2904 人正在学习 去看看 任苹蜻

创建swift项目调用oc代码

swift里创建oc 

或者导入OC文件

会提示创建一个桥接文件

下面就是那个桥接文件内容

//

//  Use this file to import your target's public headers that you would like to expose to Swift.

//

//包含所有Swift 调用oc的类

//需要调用的类头文件  放在这里面


#import "MyImageView.h"


之后 直接在Swift使用就可以了

But , 如果没有提示建立桥接文件,也可以自己建立,命名"工程名-Bridging-Header.h"(其实这个可以随意了,不过这样命名比较明显)

⚠️注意:需要在Build Settings里面设置,确保Swift Compiler Code Generation->Objective-C Bridging Header下的头文件的路径是对的


创建OC项目调用Swift代码

这个比上面那个麻烦点(其实也不麻烦,就是偶尔出问题)
在你要加入Swift的OC文件中,
导入 项目名-swift.h

是项目名哦,不是swift的类名,不管Swift有多少个文件,你就只用导入项目名-swift.h

要不就去build settings ->packing->Product Module Name 中设置模块名(不建议自己改,好吧,我也不会改,找这个只是为了看当前的项目名)
以上归纳为一个表

  调用Swift代码 调用OC代码
Swift代码 无需声明 #import "ProductModuleName-Swift.h”
OC代码 依赖bridging header文件 #import "Header.h”

这个表是借鉴的,还不错

不过混编不适合大面积,真的会出很多奇怪的问题,毕竟不是一种语言


2015-11-14 11:30:12 Xiao_Long_Li 阅读数 1594
  • iOS/Swift/OC/Objective-C/Xcode/0基础/入门

    这是一门快速入门iOS开发的课程,目的是让大家快速学会,iOS开发环境搭建,和iOS一些基础知识,最后完成一个小项目。 项目信息 提供完整的Git提交历史,和每节视频一一对应,目前有41次提交,355行注释,271行代码(不包含可视化布局文件,纯Swift和Objective-C代码)。

    2904 人正在学习 去看看 任苹蜻

OC调用Swift


如果你想在Objective-C工程中,嵌入Swift文件,实现OC调用Swift,那么这篇文章就能帮助你,由于本人最近在开发Swift项目,所以实现过OC调用Swift,在这过程中遇到过一些瓶颈,特此,将此文奉上,供大家参考。

OC调用Swift文件,需要创建桥接头文件,这个文件是当你在OC开发环境中创建Swift文件时由Xcode生成,该桥接头文件的命名是:<工程名>-Bridging-Header.h,它的作用是实现OC和Swift文件混编,并且如果我们想在当前OC类中调用Swift文件,必须在当前OC类中包含头文件,它的命名是:<工程名>-Swift.h,该头文件是由Xcode本身去维护,当我们点击进入到该头文件时,会看到Swift文件被编译成了OC封装的接口。

下面让我们来通过一个小Demo,进一步了解如何实现OC调用Swift。


第一步:创建OC工程

启动Xcode 7.1,然后单击File→New→Project菜单,在打开的Choose atemplate for your new project界面中选择“iOS →Application→Single View Application”工程模板(如下图所示)。


选中Single View Application单击“Next”,会出现如下图所示



这里我们将工程名命名为OCCallSwift,单击“Next”,就会出现下图所示的界面


单击“Create”,这时我们的OC工程就创建好了。

接下来我们创建一个OC的类,类名为OCViewController,具体怎么创建就不详细说了。


第二步:在OC工程中添加Swift文件


在当前OC工程中,创建Swift文件,如下图所示:


选中Cocoa Touch Class,点击“Next”,此时会跳到下图:


这里我们将Swift文件命名为SwiftViewController,将Language设置为Swift,单击“Next”,跳到下图:


这时单击“Creat”,就会弹出“Would you like to configure an Objective-C bridging header?”,如下图所示


单击“Create Bridging Header”,这时我们就在OC工程中创建好了一个Swift文件,如下图所示



第三步:实现OC调用Swift

这里我们就简单实现一下在OC类中跳转到Swift文件中

1)在OC类中包含头文件

#import <OCCallSwift-Swift.h>,命名规则为:<工程名>-Swift.h,如下图所示


2)在OC类中调用Swift文件,跟OC类调用OC类实现方式一样,如下图所示:



这样我们就实现了OC调用Swift。


友情提示:1.以上的代码是在Xcode7.1中实现,并且是新工程;

2.必须创建桥接头文件(“Create Bridging Header);

3.必须在调用Swift文件的OC类中包含如下头文件:<工程名>-Swift.h

4.如果以上条件全部符合,但是你在一个老的OC应用中调用Swift,有可能出现下面情况'<工程名>.Swift' file not found,这时你就应该在Xcode中的Build Setting中找到"Defines module",将其改为Yes


特别说明:1. 以上Swift文件均指Swift类;

  2. Swift语言为Swift2.0版本。


著作权声明:本文为原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

2019-11-28 16:27:41 ZY_FlyWay 阅读数 42
  • iOS/Swift/OC/Objective-C/Xcode/0基础/入门

    这是一门快速入门iOS开发的课程,目的是让大家快速学会,iOS开发环境搭建,和iOS一些基础知识,最后完成一个小项目。 项目信息 提供完整的Git提交历史,和每节视频一一对应,目前有41次提交,355行注释,271行代码(不包含可视化布局文件,纯Swift和Objective-C代码)。

    2904 人正在学习 去看看 任苹蜻

OC Swift可以无缝衔接,实现互调。

项目背景

Swift 项目引用OC文件

 

Swift 调用OC


这个应该都知道了,我们创建OC文件的时候回自动创建一个桥接文件。

在这个桥接文件里#import "xxxi.h" 就可以在Swif文件里用了。

 

OC调用Swift在这里插入图片描述

Build Setting里找到Swift Compiler 你会找到 Obeject-C Generated Interface Header Name

在文件里import这和.h文件即可。

注意:记得Swift文件类标记@objc才可以在OC里使用

OC项目中使用Swift

阅读数 32378

没有更多推荐了,返回首页