gpt4 book ai didi

ios - 递归函数或 block 的堆栈和堆条件?

转载 作者:行者123 更新时间:2023-11-28 22:07:36 25 4
gpt4 key购买 nike

想象一下这样的情况:

- (void)doSomethingWithView:(UIView)view {
for (UIView *oneView in view.subviews) {
[self doSomethingWithView:oneView];
}
}

或者类似的 block

  void (^doSomething)(NSArray *numbers);

doSomething = ^void(NSArray *numbers){

// ... bla bla
if (condition) {
doSomething(numbers);
}

};

在堆栈和堆方面会发生什么?我的感觉是, block /函数可能会在堆栈和堆上生成很多东西,这些东西永远不会释放,直到应用程序在没有内存的情况下崩溃。

我会冒这个风险吗?

最佳答案

一切都取决于你的代码和递归的数量。但无论如何,你可以这样做:

void (^doSomething)(NSArray *numbers);

doSomething = ^void(NSArray *numbers){

// ... bla bla
if (condition) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ull), ^{
doSomething(numbers);
});
}
};

在这种情况下,您再次启动该 block ,但由于您正在使用 dispatch_async外部 block 返回新 block 在并发队列中单独继续

关于ios - 递归函数或 block 的堆栈和堆条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23554014/

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