Monthly Archives: 5月 2015

从工程中删除CocosPods引入的项目

1. 删除工程文件夹下的Podfile、Podfile.lock及Pods文件夹

2. 删除xcworkspace文件

3. 使用xcodeproj文件打开工程,删除Frameworks组下的Pods.xcconfig及libPods.a引用

4. 在工程设置中的Build P[……]

Read more

IOS网络-使用原生类操作

一个标准的网络请求,包含了请求主体(NSURL、NSURLRequest)、请求操作者(NSURLConnection)、数据响应体(text、json、xml等),最后在处理返回的数据时,可能需要使用序列化将数据转换成我们需要的对象。

下面是请求一张二维码图片数据的代码:

priva[......]

Read more

IOS多线程安全-读者写者问题

多线程安全中,所谓读者写者:一个可变的对象,一个线程正对它修改,这时另个线程也过来了想修改它,同时进行吗?肯定不可以。

所以在多线程安全中,为了解决读者写者的线程安全问题,需要使用dispatch_barrier_async来保护可变对象:

var myArray :[Int][......]

Read more

OSX的Chrome修改Cache地址

为了尽可能缓解固态盘的读写操作,把最常用的浏览器缓存迁移到外置的存储中,我用的32GB SD卡。

迁移只需要两条命令:

mv ~/Library/Caches/Google/Chrome "/Volumes/OSX SD/ChromeCache"
ln -s "/Volumes/OSX[......]

Read more

IOS多线程安全-单例模式的应用

多线程安全中有个概念叫:临界区,意思是有一段代码,它只能被一个线程调用,这段代码就叫临界区。

在单例模式中,我们常常会判断当前类的实例是否已经存在了, 如果已存在那就返回当前的实例,如果不存在就创建一个。

传统操作下,可以使用条件语句判断,但是多线程下就不行了,为了保证当多个线程调用[……]

Read more

IOS多线程-NSThread

NSThread类,直接操作线程,适合将一个需要长时间运行的任务放到一个子线程中。

NSThread.detachNewThreadSelector("go", toTarget: self, withObject: nil)

private func go(){
    print[......]

Read more

IOS多线程-GCD使用

IOS多线程编程中,GCD是一个很方便的库,它的核心是GCD队列,所有操作都围绕着队列。

1、GCD中的三种队列

GCD中三种队列:主队列、全局队列、自定义队列。

 //创建一个全局队列,队列的优先级(Priority)为Default,第二个参数暂时保留,传0即可
let[......]

Read more

Swift中的闭包

闭包相比其他语法略有点生涩,其实仔细理解,会发现闭包其实就是:把嵌套函数(将一个函数作为另一个函数的参数)通过一些简洁的语法来表达。

举个例子,需要对一个数组进行排序:

var arr = ["Chris","Apple","Bady","Wifi"]

通过sorted函数可以对数组[……]

Read more

Swift中的Set集合

Set声明

Set是一种特殊的无序集合类型,这是一个简单的Set集合:

 var setDemo:Set<String> = [“1”,”2”,”3″]

setDemo是一个Set<String>类型的集合,集合中只能出现String类型的数据,如果放入了其他类型,会引发[……]

Read more

Swift中的Array初始化特性

Swift中可以使用构造语法来创建一个指定数据类型的空数组,比如:

var someInts = [Int]()

someInts是一个Int类型的空数组。

也可以在初始化时加上元素数量和默认值的定义:

var someInts = [Int](count: 3, repeatedValue:[……]

Read more

Swift中的Array数组遍历

Array是一个有序列表,可以存储多个相同数据类型的值,可以出现相同的值。

这是一个Array数组:

let nameArray = [“a”,”b”,”c”]

nameArray是一个包含String类型的数组,使用for循环可以获取每个值:

for name in nameArray{

 [……]

Read more