gpt4 book ai didi

ios - 在 NSObject iOS 中取消 objective-c block

转载 作者:行者123 更新时间:2023-12-01 19:03:53 25 4
gpt4 key购买 nike

我正在开发一个使用导航 Controller 的 iOS 应用程序。在几个 View Controller 中,我创建了一个类的实例 Request .在这个类中,我有一个具有 block 的方法:

- (void)submitRequest:(NSMutableDictionary *)dictionary
{
[[API sharedInstance] commandWithParams:dictionary
onCompletion:^(NSDictionary *json) {
if (!_canceled) {
[self.delegate receivedRequest:json];
}
}];
}

我遇到的问题是,如果在 UIViewControllers 时收到请求由于导航已更改,则应用程序将崩溃。所以我想将取消设置为 YES当导航 Controller 更改 View Controller 时。

导航更改时如何取消请求?

最佳答案

- (void)submitRequest:(NSMutableDictionary *)dictionary
{
__weak MyClass *weakSelf = self;
[[API sharedInstance] commandWithParams:dictionary
onCompletion:^(NSDictionary *json) {
if (!_canceled) {
[weakSelf.delegate receivedRequest:json];
}
}];
}

您的 Block 捕获 self ,所以你可能会得到一个保留周期。使用弱引用来避免这种情况。

关于ios - 在 NSObject iOS 中取消 objective-c block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071650/

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