您的分機無用的,因爲它只是與調用API()
每次:
self.APIHelper().callMethod()
self.APIHelper().callSecondMethod() //here you created another API instance
一樣
API().callMethod()
API().callSecondMethod()
如果API
是singletone,想法看起來不錯,但在迅疾你通常會創建帶靜態常數的singletone:
class API {
static let sharedAPI = API()
//...
}
並獲得這樣的:
API.sharedAPI.callMethod()
API.sharedAPI.callSecondMethod() //now called in same API instance
如果你不想寫API.sharedAPI
每次,那麼你可以使用:
您的擴展
extension UIViewController {
var apiHelper: API {return API.sharedAPI}
}
不推薦@NickCatib解釋。
基本視點控制器
如@NickCatib建議(更容易與變量):
class BaseViewController: UIViewController {
// some of the code you might need
let apiHelper = API.sharedAPI
}
協議
如果使用API在視圖控制器不時,可以是更好地宣佈協議
protocol APIHelper {
var apiHelper: API {get}
}
與默認實現
extension APIHelper {
var apiHelper: API {return API.sharedAPI}
}
,並僅在需要時
class ViewControllerThatNeedsAPI: UIViewController, APIHelper {
// apiHelper avalible here
}
與所有三個方面,它連接到您的viewController您訪問API是這樣的:
apiHelper.callMethod()
如何某種基本視圖控制器的地方,你可以用這個聲明擴展?這樣,即使你不需要它,你所有的視圖控制器都有這個功能。 – Miknash
像APIViewController類:UIViewController {讓APIHelper = API()} – JuicyFruit
是的,類似的東西。當你需要它的時候,你只需要繼承那個視圖控制器。 – Miknash