在 Objective-C 或大多数语言中没有预设的最大递归深度。
此外,一个简单的测试,您递归并计算直到您出错的时间也不会给您一个现实的答案,它可能会高估您在实际程序中可以达到的深度。
只要堆栈上有足够的空间用于您正在调用的方法/函数的框架,您就可以继续调用。帧包括各种内务信息(通常是固定大小)、保存寄存器(可变大小)和方法/函数的局部变量(可变大小)——因此没有单一的帧大小。
如果你想要一个粗略的近似值,你可以声明一个函数,它包含代码中出现的局部变量的平均数量和类型,并计算你可以递归调用它的次数。这将为您提供您正在运行的机器的近似值。
Mac OS X 本身对堆栈大小施加了上限,您可以使用ulimit -s. 另请参阅此Apple 文档