我正在为我公司的开发人员构建一个 SDK,包括总部和国外的开发人员。此 SDK 以 Singleton 的形式实现,并为开发人员提供从我们的公司服务器获取的数据对象(如果可能)。
我打算在 SDK 初始化时使用 NSURLCache 的 sharedURLCache 配置 NSURLSessionConfiguration,但我担心,被共享后,缓存设置会被应用程序开发人员更改,可能会导致难以理解的错误。
有没有更好的办法?
我正在为我公司的开发人员构建一个 SDK,包括总部和国外的开发人员。此 SDK 以 Singleton 的形式实现,并为开发人员提供从我们的公司服务器获取的数据对象(如果可能)。
我打算在 SDK 初始化时使用 NSURLCache 的 sharedURLCache 配置 NSURLSessionConfiguration,但我担心,被共享后,缓存设置会被应用程序开发人员更改,可能会导致难以理解的错误。
有没有更好的办法?
假设您对 Objective-c 和 Swizzling 感到满意:
您可以添加一个 NSURLProtocol 来拦截相关调用并分别管理它们的缓存。
然后,为了防止其他 NSURLProtocol 覆盖您自己的(它们按照注册的顺序进行检查),您可以调整调用以注册一个新的 NSURLProtocol [NSURLProtocol registerClass:[MyURLProtocol class]];
,并在您的备用 imp 中始终确保将您的 NSURLProtocol 添加为最后一个。
我会确保这是有据可查的,并与使用您的 sdk 的任何开发人员进行沟通,以确保她了解她的 NSURLProtocol 总是会在您的 NSURLProtocol 上松懈
这里有一些对Swizzling和NSURLProtocol的引用,来自唯一的 NSHipster ...