您的分机无用的,因为它只是与调用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