摘要:
SRWLock的目的和关键段相同,对一个资源进行保护,构造了一段“原子访问”的代码,不让其他线程访问它。但与关键段不同的是SRWLock允许区分想要读取资源值的线程和想要写入资源值的线程,因为仅仅读取资源是不会破坏数据的,下面是Slim读/写锁的简单用法:?123456789101112131415161718192021SRWLOCK g_srwLock ... //init SRWLock InitializeSRWLock(&g_srwLock); ... //当需要写入资源的时候申请"排他锁" AcquireSRWLOckExclusive(&g_s 阅读全文
摘要:
抽象类(abstract class)和接口(interface)的概念是面向对象设计中常用的概念, 也是比较容易混淆的概念. 在这里, 我提出一种区分它们的思路:1. 如果一个类B在语法上继承(extend)了类A, 那么在语义上类B是一个类A.2. 如果一个类B在语法上实现了(implement)接口I, 那么类B遵从接口I制定的协议.------------------------------------------------------------------------------------------------使用abstract class的根本原因在于, 人们希望通过这样 阅读全文
摘要:
1.1 新建一个Single View app模版项目,命名为Localization。1.2 新建后,可以看到工作目录结构文件如下,单击InfoPlist.strings,查看右边的属性,在Localization栏添加语言。 1.3 添加完成后打开对应语言文件,比如English的添加CFBundleDisplayName="China";Chinese文件添加CFBundleDisplayName="中国";运行,如果此时你的模拟器是中文,你会看到你的程序名称变成了 中国:来到设置里把语言设置成 English。此时程序名称变成了:China这时, 阅读全文