AFNetworking和单身人士

时间:2014-08-27 11:35:55

标签: 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类,它是一个单例。 它还使用委托来通知请求的结果。 使用代表..如果你使用单身,这似乎不是最好的选择,这是我的想法吗?

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

所以参考你添加的教程,我会说你是正确的,如果他们同时使用单例,那么拥有Web服务的单例实例将允许其他类覆盖委托。

在教程方面,我认为他们的意图是完全独立的Web服务类,所以理想情况下你永远不会同时使用单例运行2个类,但是或多或少的单例只会延迟加载到下一个控制器需要的时间。

我现在正在做这个决定,我想如果我做一个单一的Web服务类,我会把它变成一个带有静态方法的类来发出请求(并使用一个块参数来回调控制器中的回调并且也没有保持任何状态。我认为它将更清楚如何使用它,理想情况下有助于避免你在问题中提出的混淆。