关于

@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。

例如单例:

1
2
3
4
5
6
7
8
9
10
+(MPSingletonManager *)shareInstance
{
static MPSingletonManager * singletonManager = nil;
@synchronized(self){
if (!singletonManager) {
singletonManager = [[MPSingletonManager alloc]init];
}
}
return singletonManager;
}