ios - 如何使字典 NSDictionary 成为阅读、插入的线程安全?
<p><p>在应用程序的每次启动时,我都必须从服务器获取几个 .plist,然后我在代码中使用其中的一些(取决于用户的选择)。为了避免加载非常.plist,我在输入应用程序时下载所有并将每个解析到字典中,并将它们全部放入缓存字典中(键是plist名称,值是plist解析成字典)。如何使字典( NSDictionary 或使用其他东西)在阅读、插入时是线程安全的?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您可以使用 <a href="https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html#//apple_ref/doc/uid/10000057i-CH8-SW3" rel="noreferrer noopener nofollow"><code>@synchronized</code></a>围绕对共享对象的每次访问。我建议构建一个用于访问的包装器对象,这样您就不会意外忘记在代码中的某个位置进行同步。</p>
<pre><code>@synchronized {
NSString* settingValue = self.sharedDictionary[@"key"];
}
</code></pre>
<p>这是一种语言功能,可以翻译为独占互斥体。如果您需要对同步方式进行更多控制,则应使用提供的其他同步原语之一。 Apple 在他们的 <a href="https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html" rel="noreferrer noopener nofollow">Threading Programming Guide</a> 中有一个很好的概述。 .</p></p>
<p style="font-size: 20px;">关于ios - 如何使字典 NSDictionary 成为阅读、插入的线程安全?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/27876484/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/27876484/
</a>
</p>
页:
[1]