iOS开发学习笔记
文章平均质量分 85
ChunxueShi
通往程序媛的路上……
展开
-
iOS开发—线程之间资源共享(以卖火车票为例)—同步锁的使用
进程中的一块资源可能会被多个线程共享,也就是多个线程kennel会访问同一块资源,这里的资源包括对象、变量、文件等。当多个线程同时访问同一块资源时,会造成资源抢夺,很容易引发数据错乱和数据安全问题。为了更好的理解线程安全的问题,引入一个卖票的案例,同时设置3个窗口卖票,模拟为每一个窗口开启一个线程,共同访问票数资源。新建一个Single View Application应用,名称为02-Thr原创 2017-11-07 10:04:44 · 1530 阅读 · 0 评论 -
iOS开发—解析天气预报
新建一个SingleViewApplication应用,命名为04-JSON解析,在ViewController. m文件中,定义一个加载数据的方法,用于解析天气预报的数据,代码如下:#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void原创 2017-11-16 18:03:54 · 1213 阅读 · 1 评论 -
iOS开发—线程的模拟暂停和继续操作
表示图开启线程下载远程的网络界面,滚动页面时势必会有影响,降低用户的体验。针对这种情况,当用户滚动屏幕的时候,暂停队列;用户停止滚动的时候,继续恢复队列。接下来通过一个案例,演示如何暂停和继续操作,具体内容如下:(1)新建一个SingleViewApplication工程,命名为“13-SuspendAndContinue”;(2)进入Main.StoryBoard,从对象库中拖拽3个Bu原创 2017-11-11 20:16:00 · 3246 阅读 · 0 评论 -
iOS开发—配置Apache服务器
为了能够有一个免费测试的服务器,需要配置一个web服务器。Apache是使用最广的web服务器,它是Mac自带的服务器,只要修改几个配置就可以使用,相对而言比较简单快捷,针对一些特殊的服务器功能,Apache都能够有很好的支持。要想配置Apache,准备工作是要设置用户密码,避免计算机“裸奔”到互联网。打开Finder中的“系统偏好设置”,单击“用户与群组”,切换到当前的用户后,单击“更改密码原创 2017-11-15 20:47:53 · 714 阅读 · 0 评论 -
iOS开发—使用NSThread实现多线程
NSThread类是实现多线程的一种方案,也是实现多线程最简单的方式。1、线程的创建和启动在iOS开发中,通过创建一个NSThread类的实例作为一个线程,一个线程就是一个NSThread对象。要想使用NSThread类创建线程,有3种方法,具体如下所示:在上述代码中,这三种方法都是将target对象或者其所在对象的selector方法转化为线程的执行者。其中selector方法最多可原创 2017-11-06 13:53:12 · 321 阅读 · 0 评论 -
iOS开发—对NSOperation操作设置依赖关系
一个队列中执行任务的先后顺序的不一样的,如果队列的操作是并发执行的,则会创建多个线程,每个操作的优先级更是不固定的。通过任务间添加依赖,可以为任务设置执行的先后顺序。接下来通过一个案例来展示设置依赖的效果。新建一个SingleViewApplication工程,命名为“12-NSOperationAddDependency”。进入ViewController.m文件,通过一个模拟演示,展示如何原创 2017-11-11 19:51:49 · 3028 阅读 · 0 评论 -
iOS开发—自定义NSOperation子类下载图片
如果NSOperation的两个子类,NSInvocationOperation类和NSBlockOperation类无法满足需求,可以自定义一个继承自NSOperation的类。接下来通过一个下载图片的案例,展示如何使用自定义的NSOperation子类,这里暂时先介绍非并发的NSOperation,具体内容如下:(1)新建一个SingleViewApplication工程,命名为“11-C原创 2017-11-11 16:43:11 · 472 阅读 · 0 评论 -
iOS开发—使用NSOperation子类操作
因为NSOperation本身是抽象基类,表示一个独立的计算单元,因此如果要创建对象的话,必须使用它的子类。Foundation框架提供了两个具体子类直接供开发者使用,它们就是NSInvocationOperation和NSBlockOperation类。除此之外,还可以自定义子类,只要继承于NSOperation类,实现内部相应的方法即可。下面介绍这三种情况:1、NSInvocationOp原创 2017-11-11 11:44:38 · 605 阅读 · 0 评论 -
iOS开发—使用GCD实现多线程开发—调度队列组
假设有一个音乐应用,如果要执行多个下载歌曲的任务,这些耗时的任务会被放到多个线程上异步执行,指导全部的歌曲下载完成,弹出一个提示框来通知用户歌曲已下载完成。针对这个应用场景,可以考虑使用队列组。一个队列组可以将多个block组成一组,用于监听这一组任务是否全部完成,指导关联的任务全部完成后再发出通知以执行其他的操作。iOS提供了如下的函数开始用队列组。(1)创建队列组要想使用队列组,首原创 2017-11-10 22:57:34 · 934 阅读 · 0 评论 -
iOS开发—使用GCD实现多线程(单次或重复执行任务)
在使用GCD时,如果想让某些操作只使用一次,而不重复操作的话,可以使用dispatch_once()函数来实现。dispatch_once()函数可以控制提交的代码在整个应用的生命周期内最多执行一次,而且该函数无需传入队列,这就意味着系统将直接使用主线程执行该函数提交的代码块。dispatch_once()函数的定义格式如下所示:void dispatch_once(dispatch_once_t原创 2017-11-10 21:22:36 · 6184 阅读 · 0 评论 -
iOS开发—使用GCD下载图片
通过一个下载网络图片的案例,展示使用GCD来完成多线程的管理,当图片下载完成后,将图片显示到主线程更新UI,具体步骤如下:1、新建一个Single View Application 应用,名称为06-GCDDownload;2、进入Main.StoryBoard,从对象库拖拽一个ImageView到程序界面,用于放置下载后的图片,给Image View设置一个背景颜色,设计好的界面原创 2017-11-10 01:03:16 · 1847 阅读 · 0 评论 -
iOS开发—使用GCD实现多线程
GCD是苹果公司为多核的并行运算提出的解决方案,工作时会自动利用更多的处理器核心。使用GCD,系统会完全管理线程,开发者无需编写线程代码。GCD是Grand Central Dispatch 的缩写,它是基于C语言的。GCD会负责创建线程和调度学要执行的任务,由系统直接提供线程管理。GCD有两个核心概念:队列和任务。1、队列Dispatch Queue(队列),它是一个用来存放任务的集原创 2017-11-09 11:09:54 · 366 阅读 · 0 评论 -
iOS开发—线程间的通信
在一个进程中,线程往往不是孤立存在的,多个线程之间要经常进行通信,成为线程间的通信。线程间的通信主要体现在,一个线程执行完特定任务后,转到另一个线程去执行任务,在转换任务的同时,将数据也传递给另外一个线程。NSThread类提供了两个比较常用的方法,用于实现线程间的通信,这两个方法的定义格式如下:-(void)performSelectorOnMainThread:(SEL)aSelect原创 2017-11-08 17:49:02 · 3044 阅读 · 0 评论 -
iOS入门随笔
1、iOS是移动操作系统中的一种,主要应用于iPhone、iPad、iPod等苹果设备。Apple Watch上安装的是Watch OS不少iOS;Apple TV上安装的是tv OS。2、其他移动操作系统:android、iOS、Symbian、Windows Phone(Windows10 Mobile)3、应用于PC上的操作系统:OS X和Windows4、iOS开发步骤原创 2017-12-13 19:34:22 · 410 阅读 · 0 评论