end*_*nda 21 objective-c synchronized self declared-property
我在一些外国代码中读过一些东西,我想检查一下我的假设:
@synchronized(self)用于self在设置属性时删除前缀.
所以在我下面的例子中,我正在设置strText实例,而不仅仅是局部变量,对吧?
- (void)myfunction{
NSString * strText = @"var in function";
@synchronized(self)
{
strText = @"var class (self.strText)";
}
}
Run Code Online (Sandbox Code Playgroud)
Tir*_*rth 41
请阅读本文档
该
@synchronized()指令锁定一段代码以供单个线程使用.其他线程被阻塞,直到线程退出受保护的代码 - 也就是说,当执行继续超过@synchronized()块中的最后一个语句时.该
@synchronized()指令将任何Objective-C对象作为唯一参数,包括self.
正如Massimo Cafaro指出的那样:"在应用程序变为多线程之前创建所有互斥对象是最安全的,以避免竞争条件."
@synchronized(self)用于摆脱自我.字首.
所以在我的例子中,我将strText设置为不在我在类中设置的函数中.
两个概念正在混淆.
@synchronized(self) { ... }仅使用self对象作为信号量锁定块.with其他语言中的假设语句更能消除对self.whatever公正的需求whatever.可能想通过斯坦福CS193P在线课程来学习语言.