【问题标题】:Using RestKit, use block to load object, when and how to cancel the request?使用RestKit,使用块加载对象,何时以及如何取消请求?
【发布时间】:2023-04-05 23:31:02
【问题描述】:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"app/site_pattern" usingBlock:^(RKObjectLoader* loader) {
    [loader setObjectMapping:clientMappring];
    loader.delegate = self;
    shopLoader = loader;
}];

上面,我使用block函数在我的应用程序中加载了一些数据,但是当我弹出这个viewcontroller时,我不知道何时以及如何取消这个请求。

有什么想法吗?

- (void)showSelectShop
{

    SelectShopViewController * selectShopViewController = [[SelectShopViewController alloc] initWithNibName:@"SelectShopViewController" bundle:nil];
    [self.navigationController pushViewController:selectShopViewController animated:YES];
}

更多:

我尝试在 viewDidUnload 中取消它

- (void)viewDidUnload
{
    [super viewDidUnload];
    [shopLoader cancel];
}

但它没有用。我仍然收到错误。

【问题讨论】:

    标签: ios block restkit


    【解决方案1】:

    我通过添加解决了这个问题

    - (void)viewWillDisappear:(BOOL)animated
    {
        [shopLoader cancel];
        shopLoader.delegate = nil;
        shopLoader = nil;
    }
    

    我还是想知道在viewWillDisappear中是否不想取消这个请求,那几行应该写在哪个函数里?

    【讨论】:

    • 那要看你为什么要取消请求?
    • @jverdi 如果我想在控制器释放的时候取消,我应该把这些代码写在dealloc或者didunload或者其他里面?
    • 在你的视图中试试这个WillUnload: [[RKClient sharedClient].requestQueue cancelRequestsWithDelegate:self];
    • @jverdi 我仍然面临这个问题。记录每个装载机的名字需要花费很多时间。
    • 如果你把上面的代码放在你的viewWillUnload中,你就不需要记录所有的加载器了。这将取消所有将其委托设置为由 self 表示的同一对象的请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2016-09-16
    相关资源
    最近更新 更多