创建用到OC Framework的Swift Framework
2016-08-26 本文已影响1922人
huhueggtest_tdp
遇到的问题
平时很熟悉在Swift工程中使用Objective-C的方法,一个桥接头文件就搞定了。在写Swift Framework的时候很自然的就是先随意创建个oc文件,等待弹出是否需要自动创建桥接文件的提示。没出现! 手动添加也不生效!
那么如何在Swift的framework中使用OC的framework呢?
刚踩完坑,留个demo。
创建OC Framework
![](https://img.haomeiwen.com/i1854818/efb1327b04e067f6.png)
为swift framework调用做配置
- 需要把给Swift调用的TestOCFramework.h添加到OCFramework.h中
![](https://img.haomeiwen.com/i1854818/a75064e0c152ebfb.png)
- 设置OCFramework->BuildPhases->Headers
![](https://img.haomeiwen.com/i1854818/7cd0ad8e7327aee3.png)
TestOCFramework
TestOCFramework.h
#import <Foundation/Foundation.h>
@interface TestOCFramework : NSObject
+(NSString *)hello;
@end
TestOCFramework.m
#import "TestOCFramework.h"
@implementation TestOCFramework
+(NSString *)hello {
return @"Objective-c hello";
}
@end
创建Swift Framework
![](https://img.haomeiwen.com/i1854818/f24b89b4f0b2eb08.png)
添加OCFramework.framework
![](https://img.haomeiwen.com/i1854818/feb9d53c95690b76.png)
import OCFramework
![](https://img.haomeiwen.com/i1854818/13b98a382c3fcd78.png)
TestSwiftFramework
import UIKit
public class TestSwiftFramework: NSObject {
public class func hello() {
//测试调用OCFramework
if let ocHello = TestOCFramework.hello() {
print("TestSwiftFramework.hello load oc framework: \(ocHello)")
} else {
print("TestSwiftFramework load OCFramework failed")
}
}
}
SwiftFramework调用OCFramework就这样完成啦,分别创建OC和Swift的Demo来测试一下。
TestOCDemo
创建OC工程测试
![](https://img.haomeiwen.com/i1854818/cbe1e24e80450677.png)
添加Framework
![](https://img.haomeiwen.com/i1854818/daf8fa0565cb3fa5.png)
为SwiftFramwork修改Build Settings
![](https://img.haomeiwen.com/i1854818/463324b9037b02c1.png)
在AppDelegate调用SwiftFramework试试
#import "AppDelegate.h"
#import "SwiftFramework/SwiftFramework-Swift.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//测试调用SwiftFramework
[TestSwiftFramework hello];
return YES;
}
@end
日志
TestSwiftFramework.hello load oc framework: Objective-c hello
TestSwiftDemo
创建Swift工程测试
![](https://img.haomeiwen.com/i1854818/939b85d7db1924e1.png)
添加Framework
![](https://img.haomeiwen.com/i1854818/7aa62557b7862745.png)
在AppDelegate调用SwiftFramework试试
import UIKit
import SwiftFramework
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//测试调用SwiftFramework
TestSwiftFramework.hello()
return true
}
}
日志
TestSwiftFramework.hello load oc framework: Objective-c hello
查看Demo源码
https://github.com/huhuegg/Demo/tree/master/UseOCFrameworkInSwiftFramework