swift与OC混编高级教程之混编框架的创建和调用

首先创建一个project取个名字叫“MyMixed”,选择iOS-framework&library-cocoa touch framework

然后在里面创建一个SwiftView.swift文件,一个objc的OCView文件和MyOCView文件三个文件都继承UIView

首先在SwiftView里调用OCView

import UIKit

class SwiftView: UIView {

init(frame: CGRect) {

super.init(frame: frame)

self.backgroundColor = UIColor.redColor()

var ocView = OCView(frame:CGRectMake(0,0,50,50))

self.addSubview(ocView)

}

}

然后在MyOCView里调用SwiftView

@implementation MyOCView

- (instancetype)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

self.backgroundColor = [UIColor grayColor];

SwiftView *sView = [[SwiftView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];

[self addSubview:sView];

}

return self;

}

这时候编译是会出错的,因为不能互相找到路径,这个时候要在工程MyMixed的build settings-swift compiler-objective-才 bridging header里加入头文件路径MyMixed/OCView.h让SwiftView找到OCView.h

然后在OCView.m里加入

//工程名加上编译时会生成的一个名子,这样就可以使用swift文件

#import "MyMixed/MyMixed-Swift.h"

就能通过编译,这个时候混合框架就制作完成了

再重新建一个工程叫MixPro这里我们使用swift语言

然后add files to“。。。”导入框架的工程文件(当然也可以直接导入编译好的framework),然后编译一下框架工程,看是否能编译通过,然后在MixPro工程的build phases里点击link binary with libraries 添加MyMixed.framework,这个时候框架添加完成,编译看是否通过

然后在viewcontroller里添加代码

import UIKit

import MyMixed

class ViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

// Do any additional setup after loading the view, typically from a nib.

var swiftView = SwiftView(frame:CGRect(x:20, y:20, width:100, height:100))

self.view.addSubview(swiftView)

var myocView = MyOCView(frame:CGRectMake(50,140,200,200))

self.view.addSubview(myocView)

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

}

这个时候会出错,原因是找不到MyOCView,因为我们在创建MyMixed工程的时候选择的swift,所以只有.swift文件才能在外部被看见

我们点击MyMixed工程的MyMixed.h文件可以看见

// In this header, you should import all the public headers of your framework using statements like #import

不难明白如果要这个framework的其他文件被外部工程看见,我们需要#import 这个头文件,但是这个一定是PublicHeader.h所以我们点击MyMixed工程的build phases里的Headers,可以看见public里只有MyMixed.h,我们要想在外部使用MyOCView.h就要把它从project里拖到public里,然后重新编译,错误消除编译通过

时间: 2024-10-07 02:33:36

swift与OC混编高级教程之混编框架的创建和调用的相关文章

千锋《Java高级教程+分布式+springcloud+微信支付》

课程目录:├─千锋Java高级教程-cas单点登录(完结-8集)│      01单点登录介绍│      02cas介绍│      03tomcat搭建https│      04cas server搭建│      05Cas 配置 jdbc 连接数据库│      06Cas 密码 MD5值│      07 Cas 整合shiro1│      07 Cas 整合shiro2│      ├─千锋Java高级教程-dubbo+zookeeper分布式系统架构基础(11集)│      

Swift与OC的混编

自04年苹果推出了Swift之后,确实很快就受到许多开发者的欢迎但在实际开发时,可能有许多第三方库并未实现代码Swift化,这时就需要Swift与OC的混编技巧: 1.在.h文件中引用Swift的类和方法,需要在.h文件中进行引用,需要注意引用格式: #import "yourProjectName-swift.h" 2.在Build Settings -> Packaging -> Defines Module 改为YES 3.在Swift中引用OC的方法与类,则需在 B

Swift和OC混编

swift 语言出来后,可能新的项目直接使用swift来开发.但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块.不想再在swift 中再写一次,哪就使用混编. 这个在IOS8中是同意的. 先中简单的入手,先研究在同一个project文件夹下混合使用的情况. 为了演示.先准备两个类 第一个是swift语言写的类,文件名称为 act.swift 1.    import Foundation 2. 3.    class Act : NSObject 4.    { 5.      

iOS开发--Swift 如何完成工程中Swift和OC的混编桥接(Cocoapods同样适用)

由于SDK现在大部分都是OC版本, 所以假如你是一名主要以Swift语言进行开发的开发者, 就要面临如何让OC和Swift兼容在一个工程中, 如果你没有进行过这样的操作, 会感觉异常的茫然, 不用担心, 整个过程非常简单. 在已有的Swift工程中, 当你需要使用OC的类文件, 或者需要集成SDK时, 创建你需要的OC的类文件, 创建结束后, 会提示生成一个桥接头文件, 点击蓝色Create按钮. *OC工程也一样, 只是要进行相反的操作, 在需要创建OC文件的时候创建一个Swift的文件 *创

iOS开发--混编篇&swift与OC混合使用

Swift与OC混合使用 swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. 先中简单的入手,先研究在同一个工程目录下混合使用的情况. 为了演示.先准备两个类 第一个是swift语言写的类,文件名为 act.swift [cpp] view plaincopy import Foundation class Act : NSObject { fun

详解swift和OC以及C语言的混编(不看后悔!)

前言: Swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,或者有一些第三方使用OC写的,没有swift版本,怎么办?那就使用混编.这个在IOS8后是允许的. 先简单的入手,先研究在同一个工程目录下混合使用的情况.这里主要介绍swift类中调用OC方法和swift类中调用C函数以及OC类中调用swift的函数这三种类型的混编.另外,小编也是边研究边尝试才做出结果的,因此命名并非规范命名,大

Swift与OC混编

Swift一出来就比较受人欢迎,但是还是有很多的第三方库是不支持Swift的,个人也感觉Swift还有很长的路要走. 而且最近连Swift的创始人都离开苹果公司了......... 加入Swift用到了第三方的东西那怎么办呢,其实很简单,Xcode会自动帮你创建一个桥接文件,用来连接Swift和OC这两种语言,同样的在OC里面用Swift也是一样. 其实步骤都一样的, 第一种:在Swift中连接OC 步骤: 在新建一个OC类,到最后Xcode就会自动提示要不要创建Swift和OC的链接文件,点击

Swift 与 OC 混编

在苹果推出了swift语言之后,很多人担心OC很快会被取代,但是苹果方面表示2年内不会摒弃OC.但现在也快了啊.有的开发团队已经开始基于swift开发,但是有很多旧的框架还没来得及用swift写出来,并且某些swift的功能你还不会写,想用OC写.因此在swift开发的程序中时不时会用到OC的类,怎么让两门语言在一个程序里无缝衔接? 其实很方便 如果你不是在董铂然博客园看到本文请 点击查看原文 如图这是一个新建的swift项目,里面直接拖入了一个SVProgressHUD框架 因为swift语言

swift之OC与Swift混编

1.在Swift工程添加OC代码 在swift语言里,同一个项目内的文件基本会放在同一个命名空间里,所以没有.h文件.如果想在swift工程中添加OC代码,需要解决怎么引用OC代码的头文件问题.具体的解决办法就是:新建一个Header File文件里. 如下图所示,在新建的.h文件里面,添加OC代码的头文件 然后需要在项目部署里面配置该引用文件 这样就可以在swift文件里面按照swift语法来调用OC代码了 2.在OC工程中加入Swift代码 oc里面都有头文件,但是swift没有头文件,因此