我正在编写一些iOS代码,我注意到当我在"触摸事件"回调中写入顶点数组使用的内存时,我偶尔会出现错误(内存访问冲突)。
我相信触摸事件来自一个单独的线程,因此,如果触摸事件导致顶点数组发生变化,我将需要排队一条消息,该消息将由主线程(执行所有渲染)拾取,以便对顶点数组进行所需的更改。
根除对写入图形内存的函数的所有调用应该相当容易。 但是,为了安全起见,我想检查我在某些子例程中的哪个线程(主线程与否)(这样错误就不会再次阴险地爬回来)。
iOS中有没有办法以编程方式检查我在哪个线程上(主线程与否)?
以下代码片段将记录您是否在主线程上。
NSLog(@"[%@ %@] Is Main Thread? %@",NSStringFromClass([self class]), NSStringFromSelector(_cmd),[NSThread isMainThread]?@"YES":@"NO");
用这段代码。
[NSThread isMainThread]
回答您的问题