Sei*_*erH 4 recursion objective-c ios
我想在相机拍照前不断检查加速度计的读数.我有一个拍照的功能,在该功能的开始时,我检查加速度计读数是否过高.如果是,我想再次调用该功能来检查加速是否已经停止.
- (void)takePicture {
if (accelerating == YES) {
[self takePicture];
}
else {
// Code that takes picture
}
}
Run Code Online (Sandbox Code Playgroud)
我想我遇到的问题是函数被递归调用太多次,我得到"EXC_BAD_ACCESS(code = 2)".我该如何解决这个递归调用问题?
调用[self takePicture]将最终立即重试,这是无用的和浪费的,因为您甚至没有给您的应用程序任何时间接收额外的加速度计事件.accelerating在用完堆栈之前,值可能永远不会改变.
你可能想要做的是将方法称为一秒钟,例如
[self performSelector: @selector(takePicture) withObject:nil afterDelay: 0.01];
return;
Run Code Online (Sandbox Code Playgroud)
这将使事件循环再次调用您的方法10毫秒(0.01秒).
| 归档时间: |
|
| 查看次数: |
4627 次 |
| 最近记录: |