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

这是一个一般的编程问题。我正在使用Objective-C,但可以用任何其他语言完成

我有以下功能:

-(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]
以确保函数返回并关闭函数是否更好

我不确定这是否是正确的行为,但从我对函数、堆、堆栈和返回的理解来看,情况就是这样

编辑:

我刚刚在互联网上读到递归调用,无意中读到了维基百科上一篇名为“无限递归”的文章。对它的描述可以看作是回答我的问题的一个重要部分:

无限递归

堆栈溢出的最常见原因是过深或无限大 递归,函数多次调用自身 存储变量和相关信息所需的空间 每个调用都超出了堆栈的容量

链接:


这正是我所期待的。尽管到目前为止,在运行我的代码时从未发生过这种情况——即使是很长一段时间。但是,我非常确定最好在不同的线程上调用
[自我处理]

我不清楚您的代码,但是在递归调用的情况下,您应该清楚递归将在某些情况下停止。在我看来,这将导致一个递归循环,而调用另一个线程并不是解决方案。代码基本上被破坏了。