可能我的问题很愚蠢。
我已经看过很多使用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可以将自己设置为委托...这是错误的,因为一个人覆盖了另一个......
所有方法都无法控制线程安全,这是正确的吗?
答案 0 :(得分:0)
在这里迟到但我正在寻找有关如何在AFNetworking周围正确设置单例的信息。我找到了这篇博文: singleton-afnetworking
基本上它表明AFNetworking可以毫无问题地处理并发请求。
答案 1 :(得分:0)
所以参考你添加的教程,我会说你是正确的,如果他们同时使用单例,那么拥有Web服务的单例实例将允许其他类覆盖委托。
在教程方面,我认为他们的意图是完全独立的Web服务类,所以理想情况下你永远不会同时使用单例运行2个类,但是或多或少的单例只会延迟加载到下一个控制器需要的时间。
我现在正在做这个决定,我想如果我做一个单一的Web服务类,我会把它变成一个带有静态方法的类来发出请求(并使用一个块参数来回调控制器中的回调并且也没有保持任何状态。我认为它将更清楚如何使用它,理想情况下有助于避免你在问题中提出的混淆。