UIViewController取消分配时如何在目标C中触发阻止事件。

例如 :

   [PGMemberObj requestWithUserName:@"ab" andPassword:@"cc" andCallback:^(BOOL isSuc){
        if (isSuc) {
            NSLog("Login Suc.");
        }else
        {
            NSLog("Login Failed");
        }
    }];


当我弹出ViewController并执行dealloc时,我仍然会收到Login Suc。或登录失败消息。
如何避免这个问题?

最佳答案

尝试以下代码:

__weak UIViewController *weakSelf = self;
[PGMemberObj requestWithUserName:@"ab" andPassword:@"cc" andCallback:^(BOOL isSuc){
    if ([weakSelf isViewLoaded] && [weakSelf.view window])
        //The view controller still exists AND it's being shown on screen
    else
        //Either dealloc'd or not on screen anymore
 }];


它将测试您的视图控制器是否仍然存在并且仍在屏幕上。
只需检查weakSelf,如果您不在乎它是否仍在屏幕上显示。

if (weakSelf)
    //Still exists
else
    //dealloc'd

关于ios - uiviewcontroller解除分配时如何在 objective-c 中触发阻止事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19512400/

10-13 04:28