接上一篇文章 Swift 模塊化框架的實現以及模塊之間的解藕 之后, 我們近一步讓app在啟動之前就調用ModuleManager的初始化方法.
在OC中是有一個main.m文件以及一個main函數的,但是在swift中被去掉了,取而代之的是在AppDelegate.m中使用 @UIApplicationMain.
因此,想要實現這個功能就必須手動給它添加一個main方法
在項目中添加main方法
- 首先注釋掉AppDelegate.m中的@UIApplicationMain
- 添加一個main.swift文件,並在文件中添加如下代碼
import UIKit import Foundation import ModuleManger private let pointer = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory( to: UnsafeMutablePointer<Int8>?.self, capacity: Int(CommandLine.argc) ) let result = ModuleManagerApplicationMain( CommandLine.argc, pointer, NSStringFromClass(UIApplication.self), NSStringFromClass(AppDelegate.self) )
3.在ModuleManager中添加入口函數
// app 入口函數 public func ModuleManagerApplicationMain(_ argc: Int32, _ argv: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>!, _ principalClassName: String?, _ delegateClassName: String?) -> Int32 { ModuleManager.sharedInstance.setup() return UIApplicationMain(argc,argv,principalClassName,delegateClassName) }