|
|
1
5
上面的代码可以防止您同时设置数组,或者在另一个设置数组时获取数组。因为它是一个不可变的数组,所以这样可以保护数组本身。 但是,如果“数组将改变”,您的意思是要编辑数组中的项,那么您仍然可能会遇到一些问题。例如,如果数组中填充了nsmutableStrings,并且您有一个运行的线程:
还有另一个
对数组的访问是安全的(一个线程必须等待另一个线程访问它),但是,对foo/bar指针(相同)的访问是不安全的,因为对“appendString”的两个调用都在@synchronized块之外。 如果这就是您的数组将如何更改的,那么您还需要同步这些访问点。或者使用更多@synchronized块,或者其他类型的锁。见 Using Locks |