ios - AFNetworking 和单例

标签 ios multithreading singleton afnetworking

可能我的问题会很愚蠢。

我已经看过很多使用 AFNetworking 的应用程序的示例和教程。
其中许多使用创建一个单例客户端来与 REST 服务器交互。
例如:

@interface APIClient : AFHTTPClient

+ (APIClient *)sharedClient;

@end

@implementation APIClient

+ (APIClient *)sharedClient {
    static APIClient *sharedClient = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedClient = [[APIClient alloc] initWithBaseURL:[NSURL URLWithString:baseUrl]];
    }); 

    return sharedClient;
}

@end

但是,为此使用单例是否安全?如果我的应用程序是多线程的,那么单例是否方便?

编辑

在这个 tutorial使用一个单例类 RestfulClass。
它还用于委托(delegate)通知请求的结果。
使用委托(delegate)..如果您使用单例,这似乎不是最佳选择,我的想法是否正确?

假设我们有两个类:A 和 B
两者都使用单例,所以 sharedClient方法。 A 和 B 可以将自己设置为委托(delegate)...这是错误的,因为一个会覆盖另一个...
所有方法都无法控制线程安全,这是正确的吗?

最佳答案

在这里迟到了,但我也在寻找有关如何在 AFNetworking 周围正确设置单例的信息。我找到了这篇博文:
singleton-afnetworking

基本上它表明 AFNetworking 可以毫无问题地处理并发请求。

关于ios - AFNetworking 和单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25526137/

相关文章:

ios - 如何使用 AudioQueueEnqueueBuffer 播放静音...与 kAudioFormatMPEG4AAC_HE(VBR)

c - 为什么这个多线程程序可以工作(而不是崩溃)?

java - 不调用进入 future 名单

java - 为什么在热切初始化中,在类加载时创建的单例类的实例可能会被认为是一个缺点?

Swift 如何将 `struct` 的默认初始值设定项设为私有(private)

android - 如何在我的应用程序中跟踪自然用户与付费广告 Facebook 用户?

iphone - 我在 plist 中的信息未保存

ios - 如何使用 GPUImage 检测文档的边缘

C++ WinForms 参数通过 System::Threading::ParameterizedThreadStart

java - 当同一个单例类打包在两个war文件中时,可能没有实例?