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

时间:2012-12-05 23:08:17

标签: ios multithreading events touch

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

我认为触摸事件是在一个单独的线程中进行的,因此,如果touchevents导致顶点数组发生更改,我将需要排队消息,这将由主要数据拾取线程(完成所有渲染)以对顶点数组进行必要的更改。

根除对写入图形内存的函数的所有调用应该相当容易。但是作为一个安全措施,我想检查某些子程序中我正在使用的主线程(主线程与否)(因此该错误不会再次隐藏起来)。

在iOS中是否有办法以编程方式检查我所在的主题(主线程与否)?

1 个答案:

答案 0 :(得分:2)

如果您在主线程上,则会记录以下代码段。

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

使用这段代码。

[NSThread isMainThread]

回答你的问题