我希望了解您对以下架构的看法:
我的应用程序中有一个静态类(LoginManager),用于处理异步登录。一旦登录阶段完成,应用程序应该响应并过渡到另一个状态。
我有两个实现建议:
using a Delegate:
import Foundation protocol LoginManagerDelegate{ func onLogin(result:AnyObject) } class LoginManager { struct Wrapper { static var delegate:LoginManagerDelegate? } class func userDidLogin(result){ Wrapper.delegate?.onLogin(result) } }
using a Notification:
import Foundation class LoginManager { class func userDidLogin(result){ NSNotificationCenter.defaultCenter().postNotificationName("onLogin", object: result) } }
问: 最佳方法是什么?
let
而不是var
)。同样地,为什么要使用AnyObject
?你知道你计划传递到回调参数中的类型,就将其指定为该类型即可。希望对你有所帮助。 - Airspeed VelocityLoginManager
是一个多步骤的过程。首先,您必须设置回调。然后显示管理器以接收回调。如果您忘记了第一个步骤,奇怪的事情就会发生。LoginManager
并不是真正的“类”——它是一个全局变量和全局函数。如果您将LoginManager
改为您创建的对象,您可以给它一个接受回调的init
。 - Airspeed Velocity