在单例初始化期间尝试发送异步获取请求时出现异常

时间:2014-08-12 11:47:14

标签: ios objective-c singleton nsjsonserialization

这是我的代码:

+ (instancetype)sharedInstance
{
    static PanoramaDataManager *sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[PanoramaDataManager alloc] init];
        [NSURLConnection sendAsynchronousRequest:[sharedInstance requestToService:kPanoramaAPIGetToken withParams:@{@"login" : kPanoramaAPILogin, @"password" : kPanoramaAPIPassword}] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
            if (!connectionError) {
                NSError *error;
                NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data
                                                                             options:kNilOptions
                                                                               error:&error];
                if (!error) {
                    sharedInstance.token = [jsonResponse objectForKey:@"token"];
                } else {
                    [BxAlertView showError:error.description];
                }
            } else {
                [BxAlertView showError:connectionError.description];
            }
        }];
    });
    return [sharedInstance autorelease];
}

我想做的只是将请求发送到服务器,以便在单例初始化期间接收所有其余请求的令牌。但我在尝试设置属性的行中有一个例外的错误访问。如果我尝试编写NSError *error = nil;,则应用程序将停止,但访问权限不正确。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

在返回处删除自动释放;

如果释放静态var,则会丢失使用指针解决的值。