ios - 确定是否在 `touch` 回调线程上,ios

标签 ios multithreading events touch

我正在编写一些 iOS 代码,我注意到当我在“touchevent”回调中写入顶点数组使用的内存时偶尔会出现错误(内存访问冲突)。

我相信触摸事件是在一个单独的线程上发生的,因此,如果 touchevents 导致顶点数组发生变化,我将需要排队一条消息,该消息将由主线程接收线程(完成所有渲染)对顶点数组进行所需的更改。

根除对写入显存的函数的所有调用应该相当容易。但是,为了安全起见,我想检查某些子例程中我在哪个线程上(主线程与否)(这样错误就不会再次悄悄地重新出现)。

在 iOS 中有没有办法以编程方式检查我在哪个线程(主线程与否)?

最佳答案

以下代码段将记录您是否在主线程上。

NSLog(@"[%@ %@] Is Main Thread? %@",NSStringFromClass([self class]), NSStringFromSelector(_cmd),[NSThread isMainThread]?@"YES":@"NO"); 

使用这段代码。

[NSThread isMainThread]

回答你的问题

关于ios - 确定是否在 `touch` 回调线程上,ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734180/

相关文章:

iphone - iOS 设备中的低级循环计数器

c# - 为什么 InvokeRequired 优于 WindowsFormsSynchronizationContext?

javascript - 如何使 "this"不引用调用事件的元素?

java - 同步函数,还是在线程中锁定对象?

ios - 如何在后台创建多个对象?

python - 在pygame中更新一个数字

jQuery - 当cookie内容改变时触发事件

ios - 以 url 作为属性的 RestKit 映射对象

iphone - 魔术记录线程保存

ios - 这个 UIAlertAction 代码有什么问题?不允许点击/点击并在应用程序中前进