1. 程式人生 > >Swift-Framework開發及使用(一)

Swift-Framework開發及使用(一)

在開發中我們常常會用到一些第三方 SDK 庫,使用時只需將 framework 檔案新增到專案中即可,十分方便。同樣地,我們也可以建立自己的 framework 框架,用來封裝一些常用的工具方法、框架類等。一來不會使原始碼完全暴露在外,二來也便於程式碼複用。

下面演示一個最基礎framework的開發及使用

一、framework的製作
  1. 新建一個工程,建立時選擇 iOS->Framework & Library,如下圖所示

1
2. 在“General”->“Deployment Info”裡設定個較低的釋出版本,設定好之後的檔案目錄如下圖所示:
2


3. 之後我們在工程中建立一個測試類及一個測試方法,如下:

import UIKit

class MyTest: NSObject
{
   class func sayHello()
   {
       print("Hello World")
   }
}

但是需要注意的是:對於那些需要暴露出來,即在框架外部也能訪問使用的類、方便、變數前面需要加上關鍵字 Public。如果還允許 override 和繼承的話,可以使用 open 關鍵字。所以修改後的程式碼如下:

import UIKit

public class MyTest: NSObject
{
    public class func sayHello()
    {
        print("Hello World")
    }
}
  1. 生成framework庫檔案
    1. 釋出編譯目標選擇“Generic iOS Device”後,使用快捷鍵 command+B 或者點選選單 Product > Build 進行編譯。這時生成的是真機除錯使用的 framework。
    2. 如果釋出編譯目標選擇的是模擬器,那麼編譯出來的模擬器使用的 framework。
    3. 分別編譯後我們可以選擇 專案中的Products -> SDKDemoOne.framework 然後右鍵選擇Show in Finder 即可進入所在資料夾,這是我們可以看到分別對應於 真機 和 模擬器的連個資料夾,裡面各有一個.framework
      檔案。如下圖所示:
      3

二、framework的使用
  1. 引入framework
    1. 將生成的 SDKDemoOne.framework新增到專案中來。(注意:要根據你是使用真機除錯還是模擬器除錯選擇對應的 framework)
    2. 接著在“General”->“Embedded Binaries”中把 SDKDemoOne.framework 新增進來。這兩步完成之後的工程檔案目錄如下:
      4
  2. 使用
    由於之前定義的是一個類方法,所以我們在需要使用的地方直接呼叫該方法即可,如下所示
import UIKit
import SDKDemoOne


class ViewController: UIViewController
{

    
    override func viewDidLoad()
    {
        super.viewDidLoad()

        SDKTest.sayHello()
    }
 
}

如此,即完成了這個framework的呼叫


三、常見問題
  1. 製作的Framework是動態庫、還是靜態庫?
    1. framework 檔案可以是動態庫,也可以是靜態庫。建立 framework 的時候預設是 Dynamic Library(即動態庫),像本文樣例就是動態庫。
    2. 如果要製作靜態庫,只需要編譯 framework 時指定Build Settings-< Mach-O Type 為 Static Library
  2. 開發的sdk怎麼同時支援模擬器和真機
    1. 首先我們先進入到真機和模擬器對應的靜態庫檔案路徑
    2. 開啟終端:使用如下命令:
      lipo -create 模擬器檔案路徑/SDKDemoOne.framework/SDKDemoOne 真機檔案路徑/SDKDemoOne.framework/SDKDemoOne -output 輸出路徑/SDKDemoOne.framework
      即可得到在真機和模擬器下均可使用的靜態庫檔案。