GCD实践(一)使用GCD保护property

作为一个iOS开发者,必须要熟练使用GCD,本文是站在实际应用的角度总结GCD的用法之一:使用barrier保护property。

在多线程环境下,如果有多个线程要执行同一份代码,那么有时会出现问题,为了保证某些资源操作的可控性,需要一些手段来对这些公共资源进行保护,无论是什么语言,只要支持多线程,都得面临这个问题,即所谓的线程同步问题。本文围绕property讨论各种同步工具的保护效果,这同样可以延伸到其他需要保护的公共资源上。

NSError分析

写在前面

在iOS开发中,NSError的使用非常常见,使用也比较简单,也正因为简单,所以对这一部分知识不甚注重。但是近期在做app底层网络封装时发现了一些问题。我使用的网络框架是AFNetworking,AFNetworking常常会返回一些错误信息,有时需要将这些错误信息告诉用户,通常做法是将NSError#localizedDescription以弹框的形式原原本本展现给用户(譬如“网络不畅”之类的),但是这样非常不友好,一是这些信息往往是英文,二是这些信息过于冗长,不够简洁。所以自然想到了对这些error信息进行包装。这就迫使我不得不去了解更多关于NSError相关的信息,本文着重叙述Error Domain和Error Code。