Objective c 在返回当前函数之前调用函数会发生什么
这是一个一般的编程问题。我正在使用Objective-C,但可以用任何其他语言完成 我有以下功能:Objective c 在返回当前函数之前调用函数会发生什么,objective-c,function,scope,heap-memory,stack-memory,Objective C,Function,Scope,Heap Memory,Stack Memory,这是一个一般的编程问题。我正在使用Objective-C,但可以用任何其他语言完成 我有以下功能: -(BOOL)shouldMoveToColumn:(NSInteger)column_ andRow:(NSInteger)row_ { if (![super shouldMoveToColumn:column_ andRow:row_]) { state_ = kSBEEnemyState_Moving; [self prepareForMovi
-(BOOL)shouldMoveToColumn:(NSInteger)column_ andRow:(NSInteger)row_ {
if (![super shouldMoveToColumn:column_ andRow:row_]) {
state_ = kSBEEnemyState_Moving;
[self prepareForMoving];
[self handle];
return NO;
}
// otherwise ...
// some other calculations ....
return YES;
}
在返回“否”之前调用[self handle]
会导致执行一个操作,该操作将再次调用-(BOOL)应该移动到column:column\uo和row:row\uo
我在问自己,这是否意味着在返回函数之前调用[self handle]
时,函数可能永远不会关闭,从而导致“堆栈溢出”,因为我们在堆上不断移动,而从不关闭和向后移动
所以我想,在另一个线程上调用[self handle]
以确保函数返回并关闭函数是否更好
我不确定这是否是正确的行为,但从我对函数、堆、堆栈和返回的理解来看,情况就是这样
编辑:
我刚刚在互联网上读到递归调用,无意中读到了维基百科上一篇名为“无限递归”的文章。对它的描述可以看作是回答我的问题的一个重要部分:
无限递归
堆栈溢出的最常见原因是过深或无限大
递归,函数多次调用自身
存储变量和相关信息所需的空间
每个调用都超出了堆栈的容量
链接:
这正是我所期待的。尽管到目前为止,在运行我的代码时从未发生过这种情况——即使是很长一段时间。但是,我非常确定最好在不同的线程上调用
[自我处理]
。我不清楚您的代码,但是在递归调用的情况下,您应该清楚递归将在某些情况下停止。在我看来,这将导致一个递归循环,而调用另一个线程并不是解决方案。代码基本上被破坏了。