Swift-Framework開發(fā)及使用(一)

在開發(fā)中我們常常會用到一些第三方 SDK 庫,使用時只需將 framework 文件添加到項目中即可,十分方便。同樣地,我們也可以創(chuàng)建自己的 framework 框架,用來封裝一些常用的工具方法、框架類等。一來不會使源代碼完全暴露在外,二來也便于代碼復用。

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

一、framework的制作
  1. 新建一個工程,創(chuàng)建時選擇 iOS->Framework & Library,如下圖所示

    1

  2. 在“General”->“Deployment Info”里設置個較低的發(fā)布版本,設置好之后的文件目錄如下圖所示:


    2
  3. 之后我們在工程中創(chuàng)建一個測試類及一個測試方法,如下:

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. 發(fā)布編譯目標選擇“Generic iOS Device”后,使用快捷鍵 command+B 或者點擊菜單 Product > Build 進行編譯。這時生成的是真機調試使用的 framework。
    2. 如果發(fā)布編譯目標選擇的是模擬器,那么編譯出來的模擬器使用的 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是動態(tài)庫、還是靜態(tài)庫?
    1. framework 文件可以是動態(tài)庫,也可以是靜態(tài)庫。創(chuàng)建 framework 的時候默認是 Dynamic Library(即動態(tài)庫),像本文樣例就是動態(tài)庫。
    2. 如果要制作靜態(tài)庫,只需要編譯 framework 時指定Build Settings-< Mach-O Type 為 Static Library
  2. 開發(fā)的sdk怎么同時支持模擬器和真機
    1. 首先我們先進入到真機和模擬器對應的靜態(tài)庫文件路徑
    2. 打開終端:使用如下命令:
      lipo -create 模擬器文件路徑/SDKDemoOne.framework/SDKDemoOne 真機文件路徑/SDKDemoOne.framework/SDKDemoOne -output 輸出路徑/SDKDemoOne.framework
      即可得到在真機和模擬器下均可使用的靜態(tài)庫文件。
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容