我子类化为AFHTTPSessionManager
Web API创建客户端。基本的东西...sharedInstance
作为一个单例和获取特定数据的方法等。到目前为止,一切都很好。但是有一个棘手的部分。用户需要登录,作为响应,他将获得一个uniqe令牌,该令牌将存储在中NSUserDefaults
。因此,如果内部存储有令牌,NSUserDefaults
则用于标识服务器上的用户并使他能够发送请求而无需每次登录。该令牌的TTL较长,但是用户可能会重新安装应用或创建新帐户,因此令牌会增加。
我的问题是如何连接此AFHTTPSessionManager
子类和存储在其中的令牌NSUserDefaults
?最好在此客户端中创建一个属性,在shaedInstance
调用方法时将对其进行检查?还是每次我要发出HTTP请求时都手动检查它?
根据文档,继承AFHTTPSessionManager
和创建单例是在iOS 7及更高版本上运行的方法:
鼓励以iOS 7或Mac OS X 10.9或更高版本为目标,并大量处理Web服务的开发人员创建子类
AFHTTPSessionManager
,该类提供一种返回共享单例对象的类方法,在该对象上可以在应用程序之间共享身份验证和其他配置。
检查NSUserDefaults
何时sharedInstance
请求可能不是正确的方法,因为这样做会阻止代码的其他部分存储对singleton实例的引用,例如in viewDidLoad
,因为如果这样做,令牌的更改可能会被忽略。
检查每个请求是一个更好的选择。您可以将检查代码放入子类的计算token
属性中AFHTTPSessionManager
,并使其具有检查NSUserDefaults
值。
最后,你可以设立观察员上NSUserDefaults
,看在你需要的属性的变化,并自动进行更新。上面链接的答案解释了如何做到这一点。在您的情况下,设置观察者的代码将进入AFHTTPSessionManager
子类的构造函数,而注销观察者的代码将进入dealloc
(链接的答案在viewDidLoad
和中显示了它们viewDidUnload
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句