我正在开发一款使用导航控制器的iOS应用。在几个视图控制器中,我创建了一个类Request
的实例。在这个类中,我有一个具有块的方法:
- (void)submitRequest:(NSMutableDictionary *)dictionary
{
[[API sharedInstance] commandWithParams:dictionary
onCompletion:^(NSDictionary *json) {
if (!_canceled) {
[self.delegate receivedRequest:json];
}
}];
}
我遇到的问题是,如果由于导航导致UIViewControllers
更改时收到了请求,则应用会崩溃。因此,当导航控制器更改视图控制器时,我想将取消设置为YES
。
如何在导航更改时取消请求?
答案 0 :(得分:3)
- (void)submitRequest:(NSMutableDictionary *)dictionary
{
__weak MyClass *weakSelf = self;
[[API sharedInstance] commandWithParams:dictionary
onCompletion:^(NSDictionary *json) {
if (!_canceled) {
[weakSelf.delegate receivedRequest:json];
}
}];
}
你的Block会捕获self
,因此你可能会获得一个保留周期。使用弱引用来避免这种情况。