加载中…
正文 字体大小:

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

(2014-06-06 00:24:41)
标签:

ios

it

健康

教育

分类: swift学习
首先创建一个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里,然后重新编译,错误消除编译通过

附上一张效果图

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













0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有