摘要: 作为一个iOS开发者,必须要熟练使用GCD,本文是站在实际应用的角度总结GCD的用法之一: 使用barrier保护property。在多线程环境下,如果有多个线程要执行同一份代码,那么有时会出现问题,为了保证某些资源操作的可控性,需要一些手段来对这些“公共资源”进行保护,无论是什么语言,只要支持... 阅读全文
posted @ 2015-05-22 15:09 脸大皮厚歌 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 并行和并发在英文世界里,「并行」和「并发」的区别比较清晰,「并行」对应parallelism,「并发」对应concurrency;但在中文世界里二者仅一字之差,两个概念非常容易弄混淆;各种资料对「并行」和「并发」有各种各样的解释和比喻。我比较喜欢的一种是播客节目内核恐慌中的主播Rio的描述,大概意思... 阅读全文
posted @ 2015-05-22 14:48 脸大皮厚歌 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 在iOS开发中,NSError的使用非常常见,使用也比较简单,也正因为简单,所以对这一部分知识不甚注重。但是近期在做app底层网络封装时发现了一些问题。我使用的网络框架是AFNetworking,AFNetworking常常会返回一些错误信息,有时需要将这些错误信息告诉用户,通常做法是将error.... 阅读全文
posted @ 2015-05-22 11:48 脸大皮厚歌 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 多用firstObject方法在iOS7之前,我们获取NSArray的第一个元素,通常使用array[0],在iOS7中,新引入了公开的firstObject方法,对于空数组,该方法返回nil,而使用array[0]则会抛出NSRangeException异常。与firstObject方法对应的是l... 阅读全文
posted @ 2015-05-22 11:40 脸大皮厚歌 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 很多时候都需要在APP中控制闪光灯的开关状态,譬如扫描二维码。控制iOS设备的闪光灯代码非常简单,短短几行代码就可以搞定:AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];N... 阅读全文
posted @ 2015-05-22 11:13 脸大皮厚歌 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 经常比较疑惑NSArray、NSDictionary、NSSet这几个对象容器管理对象所采用的方式是“强引用”还是“弱引用”。通过简单的命令行程序得到的结论是“NSArray、NSDictionary、NSSet这几个容器都是强引用容器”。打开Xcode,新建project,选择“OS X”-“Ap... 阅读全文
posted @ 2015-05-22 11:11 脸大皮厚歌 阅读(436) 评论(0) 推荐(0) 编辑