码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——实用篇&Swift与Object-C混编之框架

时间:2015-06-02 10:47:01      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

swift与OC混编之框架的创建和调用

首先创建一个project取个名字叫“MyMixed”,选择iOS-framework&library-cocoa touch framework
然后在里面创建一个SwiftView.swift文件,一个objc的OCView文件和MyOCView文件三个文件都继承UIView
首先在SwiftView里调用OCView
 1 import UIKit
 2 
 3  
 4 
 5 class SwiftView: UIView {
 6 
 7  
 8 
 9     init(frame: CGRect) {
10 
11         super.init(frame: frame)
12 
13         self.backgroundColor = UIColor.redColor()
14 
15         
16 
17         var ocView = OCView(frame:CGRectMake(0,0,50,50))
18 
19         self.addSubview(ocView)
20 
21     }
22 
23  
24 
25 }
26 
27  

 

然后在MyOCView里调用SwiftView

 1 @implementation MyOCView
 2 
 3 - (instancetype)initWithFrame:(CGRect)frame
 4 
 5 {
 6 
 7     self = [super initWithFrame:frame];
 8 
 9     if (self) {
10 
11 self.backgroundColor = [UIColor grayColor];
12 
13         SwiftView *sView = [[SwiftView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
14 
15         [self addSubview:sView];
16 
17     }
18 
19     return self;
20 
21  
22 
23 }

 

 

这时候编译是会出错的,因为不能互相找到路径,这个时候要在工程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里添加代码

 1 import UIKit
 2 
 3 import MyMixed
 4 
 5  
 6 
 7 class ViewController: UIViewController {
 8 
 9                             
10 
11     override func viewDidLoad() {
12 
13         super.viewDidLoad()
14 
15         // Do any additional setup after loading the view, typically from a nib.
16 
17         
18 
19         var swiftView = SwiftView(frame:CGRect(x:20, y:20, width:100, height:100))
20 
21         self.view.addSubview(swiftView)
22 
23         
24 
25         var myocView = MyOCView(frame:CGRectMake(50,140,200,200))
26 
27         self.view.addSubview(myocView)
28 
29     }
30 
31  
32 
33     override func didReceiveMemoryWarning() {
34 
35         super.didReceiveMemoryWarning()
36 
37         // Dispose of any resources that can be recreated.
38 
39     }
40 
41  
42 
43 }

 

这个时候会出错,原因是找不到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里,然后重新编译,错误消除编译通过

附上一张效果图

技术分享

 

 

 

 

 

 

iOS开发——实用篇&Swift与Object-C混编之框架

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4545541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!