firebase authUser块阻止ViewController解除

时间:2015-07-02 23:17:42

标签: uiviewcontroller firebase objective-c-blocks

我在ViewController中使用此firebase块进行用户身份验证:

[ref authUser:@"x@y.de" password:@"xyz" withCompletionBlock:^(NSError *error, FAuthData *authData) {
if (error) {
    [self goOffline];
} else {
    [self handleFBUser: authData completion:completion];
}
}];

但是如果我关闭VC,VC就会被隐藏但仍然在内存中(NSLog仍会在控制台中每秒显示一条消息)。

更新

经过一些更多测试后,我发现如果firebase登录数据错误,可以解除VC,

authData是nil

但是如果登录数据正确且

authData不是nil

VC不能被解雇。

UPDATE2

现在我改变了这样的代码:

__weak FirebaseVC *weakSelf = self;
__weak void(^weakHandleResult)();

void(^handleResult)();

weakHandleResult = handleResult = ^(NSError *error, __weak FAuthData *firebaseUser) {
    if (error) {
        completion(error, Nil);
    } else {
        [weakSelf handleFBUser: firebaseUser completion:completion];
    }
};

[ref authUser:@"x@y.de" password:@"xyz" withCompletionBlock: handleResult];

但结果相同。

UPDATE3

杰伊把我带到了正确的方向。

我从另一个VC块调用身份验证,并且我必须将self设置为" __ weak weakself = self"并使用weakself作为在其他VC中调用身份验证的块中的函数。

0 个答案:

没有答案