1断傲、創(chuàng)建一個Framwork
2脱吱、選擇語言為Swift
3、然后就看到這樣子的工程列表
4认罩、設置為靜態(tài)庫
5箱蝠、添加腳本
6、編寫腳本
腳本代碼粘貼進去
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
#open "${DEVICE_DIR}"
#open "${SRCROOT}/Products"
fi
7垦垂、設置最低支持版本
8宦搬、新建一個文件
9、編寫如下代碼
import UIKit
class PQTest: NSObject {
class func sayHello(){
print("Hello Framework")
}
}
10劫拗、分別選擇模擬器和真機編譯一次
11间校、然后在創(chuàng)建一個測試程序
File - new - target
11、導入框架
進入新建的那個測試程序页慷,進入ViewController
12憔足、到這里你就會發(fā)現(xiàn)死活都用顯示不了.....
因為你沒有加public
然后回到你的Framework中的PQTest這個文件中,修改代碼如下:
public class PQTest: NSObject {
public class func sayHello(){
print("Hello Framework")
}
}
然后編譯一次(如果你是用模擬器測試就編譯模擬器包酒繁,如果是你真機就選擇真機)
13滓彰、回到ViewController就可以使用了
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
PQTest.sayHello()
}
}
14、上面是針對在Swift工程中使用州袒,如果你在OC工程或者混編工程中使用的畫還需要
-
@objc 這個很重要
15揭绑、我們定義一個 enum
enum PQTestType: Int {
case a
case b
case c
case d
}
正常情況下的Swift中的enum這樣子寫就可以,但是如果你需要在OC項目中使用郎哭,就需要加上 @objc public
16洗做、如果想要剛才的內(nèi)容全部支持在OC項目中調(diào)用
@objc public enum PQTestType: Int {
case a
case b
case c
case d
}
public class PQTest: NSObject {
@objc public class func sayHello(){
print("Hello Framework")
}
}
你最終的代碼如下弓叛,只有加了@objc 在會在 '項目名'-Swift.h中進行橋接,這個時候你可以調(diào)用诚纸。
中查看
最后在OC中調(diào)用如下
2017-12-25 更新:
如果你在Swift的Framework中要使用OC的文件
首先橋接文件是不支持的撰筷,如果你使用了橋接文件的話會報如下錯誤:
<unknown>:0: error: using bridging headers with framework targets is unsupported
但是你又想使用怎么辦。
- 1畦徘、創(chuàng)建Objective-C的文件
- 2毕籽、在Framework中自帶的頭文件導入#import <XXX/OC文件.>
舉例:framework名稱 AA
OC文件名為: BBBB
所以你要在AA.h文件中導入#import <AA/BBBB.h> -
3、公開他
更新2018年05月07日 解決Swift框架在OC項目里面調(diào)用的問題
- 問題:
library not found for -lswiftSwiftOnoneSupport for architecture arm64
- 解決方案:
在OC的項目中創(chuàng)建一個空的Swift文件即可