我的iPhone应用程序真的需要锁定吗?

前端之家收集整理的这篇文章主要介绍了我的iPhone应用程序真的需要锁定吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个相对简单的iPhone应用程序,它有一个多轮定时器,有许多设置,如轮数和圆长.我们允许在定时器运行时更​​新某些设置,这意味着定时器可能正在从设置正在写入的同一内存中读取.没有关键的代码段,其中多个线程将同时执行,但来自设置的代码可能正在尝试写入计时器正在读取的内存.

就一个简单的例子而言,假设我们是一个全局变量foo,并且有一个NSTimer方法,如下所示:

– (无效)timerTick
{
   NSString * x = foo;
}

然后在设置代码中,我们在计时器运行时执行此操作:

foo = @“test”;

在这个应用程序中使foo成为原子还是足够的,还是需要某种锁定方案?

谢谢.

解决方法

通常,您不必以常规方式使用NSTimer时锁定.

更详细地说,当您使用NSTimer的scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:创建计时器时,生成的计时器将添加到您创建计时器的线程的运行循环中.因此,如果以这种方式在主线程上创建NSTimer实例,则计时器的触发作为主事件循环的一部分进行处理,因此您注册的回调在主线程上调用,而不是在另一个线程上调用.所以,如果你自己不创建任何线程,那么根本不关心锁定等.

有关更多详细信息,请阅读this.

原文链接:/cocoa/568444.html

猜你在找的cocoa相关文章