Возможно, мой вопрос будет глуп.AFNetworking и singleton
Я видел много примеров и руководств для приложений, использующих 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
Но это безопасно иметь одноплодной для этого? Если мое приложение многопоточно, удобно иметь одноэлемент?
EDIT
В этом tutorial использует класс RestfulClass, который одноэлементно. Он также используется делегатом для уведомления результатов запросов. Используется делегат .. Это не похоже на лучший выбор, если вы используете синглтон, правильно ли это мое мышление?
Предположим, что у нас есть два класса: A и B Оба метода используют один и тот же метод sharedClient
. A и B могут устанавливать их как делегат ... это неправильно, потому что один перезаписывает другой ... Все методы не имеют контроля над потокобезопасностью, это правильно?
singleton - это один экземпляр, который может использоваться многими потоками, который выполняется путем обеспечения того, чтобы объект правильно синхронизировался по потокам, как это делали ваши методы. Это абсолютно безопасно в Cocoa, поскольку сетевые запросы выполняются асинхронно и поддерживают параллельные операции. –
I модифицировано мой вопрос. спасибо – Safari