gpt4 book ai didi

ios - 如何在调用 dealloc 后停止运行 block ? ios

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:42:28 26 4
gpt4 key购买 nike

我有这段代码:

__block NSMutableArray *subCategoriesBlock = self.subCategories ;
__block UITableView *lstSubCategoriesBlock = self.lstSubCategories;
[[AsyncRequest initRequest: onCompletedBlock:^(NSMutableArray *subcategories) {
[subCategoriesBlock addObjectsFromArray:subcategories];
[lstSubCategoriesBlock reloadData];

}]ExecuteRequest];

AsyncRequest类会在后台发送http Request,然后在CompletedBlock上运行。

我的问题:有时系统会释放当前 View Controller ,然后调用 onCompleted block ,并在 [lstSubCategoriesBlock reloadData] 上崩溃,因为它已经释放。

我应该怎么做,以防止系统在释放 viewContorller 时执行 [lstSubCategoriesBlock reloadData]

最佳答案

使用 __weak 这样当对象被释放时它指向 nil

__block __weak NSMutableArray *subCategoriesBlock = self.subCategories ;
__block __weak UITableView *lstSubCategoriesBlock = self.lstSubCategories;
[[AsyncRequest initRequest: onCompletedBlock:^(NSMutableArray *subcategories) {
[subCategoriesBlock addObjectsFromArray:subcategories];
[lstSubCategoriesBlock reloadData];

}]ExecuteRequest];

关于ios - 如何在调用 dealloc 后停止运行 block ? ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25524012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com