PDF 课件和源代码下载地址:
作者回复: 对于block,我们可以先忽略各种定义,简单的理解,block 就是一段代码,然后Copy到另外一个文件中来执行。当然这个不是特别严谨的定义哈。那么为什么我们要用这种方式执行代码呢? 比如B有一个block,在A中赋值,然后B再执行这段代码,直接讲代码写在B中不是也可以么?那么就要看Block为我们带来了哪些方便,Block是可以包含上下文的,比如上面的例子,block中可以直接引用A,或者A的property。如果这段代码直接写在B中,B就要import 对应类,然后相应的property都需要暴露出来。如果使用Block,就使得A中包含很多上下文的代码,直接Copy出来,在B中可以执行了。以上是我感觉通俗的理解,那么具体严谨的,以及深入的使用和对应注意事项,循环引用等等,也可以具体的在网上搜索,或者留言具体的问题哈
作者回复: NSDate - NSData 拼写错了
作者回复: 使用 URLSessionTask 的话,系统内部会在非 UI 线程进行异步的处理请求,从这个维度上,我们是不需要开辟一个子线程的。但是当请求处理结束,回调到我们的completion handlers之后,我们就需要判断之后的数据处理是否在 UI 线程以及其他线程了,最常见的就是当接收到数据需要进行磁盘存储,就尽量不要在 UI 线程进行操作。
作者回复: 已经更新了代码 fork如果没有及时的更新就看下这里哈 https://github.com/dequan1331/geektime-ios-course
作者回复: 这个为了避免版权的问题,没有抓包,用的接口。这个免费的接口每天有次数的限制....过一天应该就好了。自己可以申请类似的,或者抓下主流App的列表请求作为练习,都是明文的。