
OC开发
文章平均质量分 89
落叶刺客
邮箱:aishiqichun@163.com
展开
-
RunLoop的基础知识
RunLoop是多线程开发中非常重要的一个知识点,比较抽象。一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。但是,在实际开发过程中,我们可能需要这样一个机制,让线程能随时处理事件但并不会退出。也就是说,在线程没有处理消息时,可以进入休眠状态,以避免资源占用。而在有消息到来时,可以立刻被唤醒。这种机制就是RunLoop。一、RunLoop的基本概念 1、RunLoop的作用原创 2017-09-21 05:49:13 · 468 阅读 · 0 评论 -
修复导航控制器的半屏pop返回手势
我们在《隐藏导航栏并重建全屏pop手势》中说过,如果隐藏了导航控制器的navigationBar,那么就会造成系统默认的侧滑返回功能失效。其实,除了隐藏导航控制器的navigationBar会造成侧滑返回失效之外,只要是修改了默认的leftBarButtonItem,就会造成侧滑返回功能失效,为此,我们需要对其进行修复。 幸运的是,修复系统默认的侧滑返回功能比重建全屏pop手势要简单得多,只原创 2018-02-04 22:13:18 · 532 阅读 · 0 评论 -
多线程之pthread的简单使用
在iOS开发中,实现多线程的技术主要有四种,分别是pthread、NSThread、GCD和NSOperation。它们的技术特点如下表所示:在iOS开发中多线程技术实现的方式.png 在iOS中,一个应用程序运行后,默认会开启一条线程,我们称为“主线程”或“UI线程”。其作用主要是用来显示或者刷新UI界面、处理UI事件(比如说滚动、点击和拖拽等)。通常情况下,不能将耗时操作放在主线程当原创 2017-09-21 05:48:39 · 766 阅读 · 1 评论 -
多线程之NSThread的简单使用
NSThread是基于Objective-C的,相比pthread而言,它使用起来更简单和方便。下面我们就新建一个工程,来看一下NSThread的简单使用。一、NSThread的基本使用 NSThread有三种开启子线程的方法,分别是- initWithTarget: selector: object:、- detachNewThreadSelector: toTarget: withO原创 2017-09-21 05:48:42 · 727 阅读 · 0 评论 -
NSThread线程间的通信
在iOS开发中,一个进程中通常会有多个线程,而且这些线程往往不是孤立的,多个线程之间通常需要进行通信。线程通信具体表现为一个线程向另一个线程传递数据,或者某个线程在执行完特定的任务以后,需要转到另一个线程中继续执行任务。下面,我们就通过一个实例来简单演示一下线程间的通信。一、简单实现一个图片下载实例 新建一个工程,程序运行以后,当我们点击屏幕,让它下载网络上指定的图片。在项目目录中选中M原创 2017-09-21 05:48:44 · 500 阅读 · 0 评论 -
多线程之GCD的简单使用
GCD为Grand Central Dispatch的缩写,是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统,是一个在线程池模式的基础上执行的并行任务。 GCD是一个替代诸如NSThread等技术的很高效和强大的技术。GCD完全可以处理诸如数据锁定和资源泄漏等复杂的异步编程问题。GCD的工作原理是让一个程序,根据可用的处理资源,安排他原创 2017-09-21 05:48:47 · 517 阅读 · 0 评论 -
GCD中常用的函数
我们在上一篇笔记中讲异步函数和同步函数,以及各种队列时,学习过不少GCD函数,今天再补充两个GCD中常用的函数:dispatch_after( )函数和dispatch_once( )函数。其中,dispatch_after( )函数常用于延时执行任务,而dispatch_once( )是一次性执行代码的函数,常用于单例设计模式中。一、GCD中延时执行任务的函数 首先来看GCD中用于延时原创 2017-09-21 05:48:49 · 1005 阅读 · 0 评论 -
GCD知识进阶
GCD函数功能非常强大,在iOS开发中会经常用到。学好GCD的相关知识,不仅有利于提高高开效率,对于我们学习和理解第三方框架代码也有很大的帮助。下面,我们继续学习GCD中几个非常重要的函数。一、GCD栅栏函数 通过前面的学习,我们知道,在GCD异步函数和并发队列中,多任务是并发执行的。因此,很多时候,哪些任务先执行,哪些任务后执行是很难预料的。但是,有时候,在多任务并发执行过程中,我们既原创 2017-09-21 05:48:52 · 450 阅读 · 0 评论 -
GCD在单例设计模式中的应用
在iOS开发中,单例设计模式的应用十分广泛,最经典的应用场景就是在登陆界面的处理上。以新闻App为例,如果你要查看我的收藏,或者我的评论时,它会弹出一个登陆界面,或者你直接点击登陆时,它也会弹出一个登陆界面。通常情况下,一个应用的资源是十分有限的,为了保证一个类在整个程序运行过程中只有一个实例,一般会对登陆界面做单例化处理。在前面的笔记中,我们学习了多线程的相关知识,在单例设计过程中刚好可以用上。原创 2017-09-21 05:48:55 · 448 阅读 · 0 评论 -
多线程之NSOperation的简单使用
和多线程相关的基础知识,总共只有四个:pthread、NSThread、GCD和NSOperation。在前面,我们已经整理完了3个,现在就剩下NSOperation这一个了,下面,我们就继续学习这最后一个。一、NSOpertion的基本使用 NSOperation是一个抽象类,它本身并不具备封装操作的能力,必须使用它的子类。这一点和我们之前学过的UIGestureRecognizer类原创 2017-09-21 05:48:57 · 490 阅读 · 0 评论 -
NSOperation基础知识进阶
我们在上一篇笔记中整理了NSOperation的一些基础知识,接下来,我们进一步学习它的高级用法。一、NSOperation进阶 1、队列的最大并发数 我们在讲NSOperationQueue时说过,通过[[NSOperationQueue alloc] init]这种方式得到的队列,它同时具备并发和串行的特征。那么,它在什么时候是并发,什么时候是串行呢?可以按住command键点击进入原创 2017-09-21 05:49:00 · 896 阅读 · 0 评论 -
多线程技术的综合应用
在前面的笔记中,我们整理了和多线程相关的一些基础知识,下面通过一个实例来做一个综合演练。我们都见过下面这种界面:多图下载.jpg 首先,它是一个tableView,联网以后获取cell上面的数据。在每一行cell中,它的左边是一个应用图标,右边有若干文字或者按钮。接下来,我们就搭建一个类似于这样的界面。一、搭建基本界面 新建一个工程。因为我们的界面是基于tableView的,所以,原创 2017-09-21 05:49:03 · 619 阅读 · 0 评论 -
SDWebImage的基本使用
在上一篇笔记《多线程技术的综合应用》中,我们通过一个示例来演示了一下多线程技术的使用。在下载网络图片的过程中,写了很多代码,各种判断、各种缓存和优化,写了100多行代码,非常的麻烦!其实,如果使用SDWebImage框架的话,只需要一行代码就可以搞定。下面,我们就用这个框架来改造我们的代码。 将SDWebImage框架的核心代码文件拖入到我们的项目中,在ViewController中包含头文件原创 2017-09-21 05:49:05 · 821 阅读 · 0 评论 -
SDWebImage框架重要的细节
我们在前面的笔记《SDWebImage的基本使用》中学习了该框架的一些基本知识,接下来,再看一下它内部的一些细节。 1、最大并发数 在学习NSOperation的时候,我们知道,线程的最大并发数默认值是-1,也就是不设限。那么,在SDWebImage中,线程的最大并发数是多少呢? 在《多线程技术的综合应用》这篇笔记中,我们下载网络图片的代码,其实主要是分为两大部分:一部分是用来处理缓存原创 2017-09-21 05:49:08 · 393 阅读 · 0 评论 -
iOS项目练习
最进在练习用storyboard做项目,所以就搞了一个双语版的Demo,不过由于对Objective-C不是特别熟悉,所以Objective-C版本的做得比较慢。总体而言,项目的完成度都不是很高,但是后续一定会慢慢去完善,尽最大限度的去模拟原始项目真实的样子。 Swift项目做得稍微多一点,目前已经开始慢慢的去展示数据。最开始的时候,本来想通过SwiftyJSON做模型转换,但是后来发现服务原创 2018-02-06 17:23:27 · 1348 阅读 · 0 评论