IOS - 委托与通知

Shl*_*rtz 5 delegates login nsnotifications ios swift

想对以下架构有您的看法:

在我的应用程序中,我有一个处理异步登录的静态类(LoginManager).登录阶段完成后,应用程序应响应并转换到另一个状态.

我有2个实施建议

  1. 使用代表:

    import Foundation
    
    protocol LoginManagerDelegate{
        func onLogin(result:AnyObject)
    }
    
    class LoginManager {
        struct Wrapper {
            static var delegate:LoginManagerDelegate?
        }
    
        class func userDidLogin(result){            
             Wrapper.delegate?.onLogin(result)
        }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用通知:

    import Foundation
    
    class LoginManager {
    
        class func userDidLogin(result){            
             NSNotificationCenter.defaultCenter().postNotificationName("onLogin", object: result)
        }
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

:什么是最好的方法?

小智 8

如果

func onLogin(结果:AnyObject)

只在一个类中实现,我会与代表一起使用.更适合1对1的关系.

如果它是1到n的关系,我会选择通知.

我不喜欢依赖Notification(个人品味),因此我通常在AppDelegate中处理登录/注销转换,这允许我使用Delegate模式.


Chi*_*ani 7

对于

  1. 代表/协议

当您想要从当前视图控制器更新或完成前一个控制器中的任何过程时,通常会使用它.因此,如果要更新先前视图控制器中的值,则最好使用委托/协议.

所以它基本上是一对一的关系.

  1. 通知

当您想要从任何其他viewcontroller更新视图控制器中的值时,通常会使用它.所以它基本上是一对一的关系.

因此请根据您的要求使用此类型.

也许这会对你有所帮助.