2017-06-26 76 views
1

我剛開始玩xcode中的框架,嘗試創建自己的模塊。在創建iOS應用程序時,其入口點相對簡單(AppDelegate)Swift框架入口點

然而,我創建的框架與「main.swift」或類似的方法沒有任何關係。

我是否必須自己創建/指定入口點? 謝謝

編輯:我希望框架可運行的原因是,我可以實際上打印一些輸出,而我正在確保一切正常工作。

回答

1

我從@deanWombourne得到的答案指出,如果任何人只想按原樣使用框架項目進行開發並開發框架而不將其集成到應用程序中執行,則可以使用框架提供的測試爲入口點。

對於某些可能是新手的人,只需將單元測試包括到您的項目中,按下您通常按下的播放按鈕進行運行,然後選擇要在其旁邊寫入「test」的扳手圖標以運行測試。

1

框架沒有像這樣的傳統入口 - 它永遠不會自行運行,所以它不需要它。

要使用您的框架,您需要創建一個與您的框架鏈接的應用程序 - 應用程序的入口點然後會從框架內調用方法。

+0

以某種方式運行我的框架的代碼作爲即時通訊開發它雖然沒有用嗎?這種做法迫使我在CLI工具環境中創建我的框架,當完成時,從中取出所有文件,然後將它們打包在一個框架中。如果我可能會問,你會如何正常創建框架?謝謝。 –

+0

喬治 - 你不是簡單的,然後有一個電話(也許是「測試」或類似的),如果你碰巧想,你可以打電話在那個設置? – Fattie

+1

@GeorgeAvgoustis - 關於如何編碼的例子,看看我的答案。有關如何一起開發的示例,請查看我的答案:https://stackoverflow.com/questions/41207622/how-to-make-same-ios-swift-app-with-only-some-differences- in-the-code-and-assets/41209283#41209283基本上你希望你的Xcode應用程序項目也包含你的框架項目的'.xcodeproj'文件。 – dfd

1

(我的TL; DR是在底部。)

如前所述,有一個像你所想沒有入口點。相反,你應該這樣做:

在您的框架目標(我假設的框架被命名爲MyFramework):

添加文件,類,屬性,子類控件等和標記的東西如public,private,internalfileprivate。 (見the access level section蘋果文檔。)

例如:

public class MyClass1 { 
    public var property1 = "" 
    private var property2 = "" 
    public func myFunc() -> String { 
     print("Hello World!") 
    } 
} 
private class MyClass2 { 
    var property1 = "" 
    var property2 = "" 
    func myFunc() -> String { 
     return "Hello World!" 
    } 
} 

在您的應用程序的目標(同樣,假設你的框架被命名爲myFramework):

include MyFramework 

class ViewController: UIViewController { 
    func tryThis() { 
     let myClass1 = myClass1() 
     print(myClass1.myFunc()) // prints "Hello World!" 
     // the line below will generate a build error 
     // as myClass2 is marks private 
     let myClass2 = myClass2() 
    } 
} 

TL; DR

瞭解您的訪問級別,將代碼添加到您的Framework目標中,並將框架添加到您的應用中。

+0

感謝您的答案。但是,這並不意味着爲了在Im創建時測試框架,它需要包含在某些應用程序中,因爲它不能自行運行? –

+0

我在此鏈接的早期回覆中發佈了評論:https://stackoverflow.com/questions/41207622/how-to-make-same-ios-swift-app-with-only-some-differences-in-the -code和資產/ 41209283#41209283。我使用這個設置,並在Xcode窗口中同時開發兩個目標 - 應用程序和框架。事實上,如果您編輯應用程序方案來構建兩個目標,則可以隨時在構建應用程序的每個領域中引入框架更改。 – dfd