【发布时间】:2014-05-17 13:16:42
【问题描述】:
我是 iOS 开发新手,正在尝试解决以下问题。
在我的应用程序(与 REST API 对话)中,我想在应用程序开始时向服务器发出初始请求以获取用户信息。我决定使用带有单例方法的单独服务类。它向服务器发出一次请求,然后返回用户实例。
@implementation LSSharedUser
+ (LSUser *)getUser {
// make request to api server on the first call
// on other calls return initialized user
static LSUser *_sharedUser = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
LSHTTPClient *api = [LSHTTPClient create];
[api getUser:^(AFHTTPRequestOperation *operation, id user) {
_sharedUser = [[LSUser alloc] initWithDictionary:user];
} failure:nil];
});
return _sharedUser;
}
@end
我的问题是从服务器初始化全局数据的正确方法吗?如您所见,请求是异步的(使用 AFNetworking 库),因此它将返回 null,直到请求完成。
这里的另一个问题是,一旦失败(例如连接不良),用户将永远为空。
【问题讨论】:
标签: ios objective-c singleton global-variables afnetworking-2