ios多线程

文顶顶iOS开发博客链接整理及部分项目源代码下载

心已入冬 提交于 2020-01-31 05:08:54
网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找。如果你是初学者,在学习了斯坦福iOS7公开课和跟着文顶顶的博客做项目之后,最快只需要2个月时间,就基本可以独立完成iOS App的开发工作。有经验的开发者也可以在该博客中寻找代码片段进行学习借鉴,必有所收获。 在此也向@文顶顶 表示严重感谢! 源码请加群539156631下载 由于文顶顶博客博文繁多,每次找文章需要频繁的翻页,故专门整理了跟iOS开发的全部链接,方便快速查阅。 OC语言前期准备 - 文顶顶 - 博客园 OC语言基础知识 - 文顶顶 - 博客园 OC方法和文件编译 - 文顶顶 - 博客园 OC内存管理 - 文顶顶 - 博客园 OC面向对象—封装 - 文顶顶 - 博客园 OC面向对象—继承 - 文顶顶 - 博客园 OC面向对象—多态 - 文顶顶 - 博客园 OC点语法和变量作用域 - 文顶顶 - 博客园 OC语言@property @synthesize和id - 文顶顶 - 博客园 OC语言构造方法 - 文顶顶 - 博客园 OC语言类的本质和分类 - 文顶顶 - 博客园 OC语言description方法和sel - 文顶顶 - 博客园 foundation框架—结构体 - 文顶顶 - 博客园

面试基础题

社会主义新天地 提交于 2020-01-31 04:53:21
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承; Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。 2.#import 跟#include 又什么区别,@class呢, #import<> 跟 #import”"又什么区别? #import是Objective-C导入头文件的关键字, #include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once; @class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含; #import<>用来包含系统的头文件,#import””用来包含用户头文件。 3. 属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用? readwrite 是可读可写特性;需要生成getter方法和setter方法时 readonly 是只读特性 只会生成getter方法 不会生成setter方法

[iOS 多线程 & 网络 - 2.9] - ASI框架

柔情痞子 提交于 2020-01-30 19:24:55
A.ASI基本知识 1.ASI 简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大。 ASI的实现基于底层的CFNetwork框架,因此运行效率很高。 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dotey/archive/2011/05/10/2041966.html http://www.oschina.net/question/54100_36184 2.ASI 的使用 (1)导入   下载并导入ASI框架,注意该框架依赖于Reachability. (2)ASI的源码需要设置为非ARC编译: ASI依赖框架: B.基本使用 创建请求对象 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 1.发送GET & POST请求 (1)GET请求 1 /** get请求 */ 2 - (void)sendByGet{ 3 // 创建请求 4 NSURL *url = [NSURL URLWithString:@"http://192.168.0.21:8080/MyTestServer/login?user=tom&password=123"

java多线程:synchronized和lock比较浅析

醉酒当歌 提交于 2020-01-26 17:38:51
转载:http://www.toutiao.com/a6392135944652587266/?tt_from=weixin&utm_campaign=client_share&app=news_article&utm_source=weixin&iid=7704173001&utm_medium=toutiao_ios&wxshare_count=1 synchronized是基于jvm底层实现的数据同步,lock是基于Java编写,主要通过硬件依赖CPU指令实现数据同步。下面一一介绍 一、synchronized 的实现方案 1. synchronized能够把任何一个非null对象当成锁,实现由两种方式: a.当synchronized作用于非静态方法时,锁住的是当前对象的事例,当synchronized作用于静态方法时,锁住的是class实例,又因为Class的相关数据存储在永久带,因此静态方法锁相当于类的一个全局锁。 b.当synchronized作用于一个对象实例时,锁住的是对应的代码块。 2.synchronized锁又称为对象监视器(object)。 3.当多个线程一起访问某个对象监视器的时候,对象监视器会将这些请求存储在不同的容器中。 >Contention List:竞争队列,所有请求锁的线程首先被放在这个竞争队列中 >Entry List:Contention

多线程高并发这一篇就够了不用再去别家了

微笑、不失礼 提交于 2020-01-26 14:34:10
  高伸缩性的并发编程是一种艺术,是成为高级程序员的必备知识点之一,最近总结了一下相关方面的知识。    借鉴过得博客有的我也不知道原文作业是谁 https://blog.csdn.net/qq_34337272/article/details/81072874 https://www.cnblogs.com/dolphin0520/p/3932921.html 一、线程 什么是线程? 线程是进程中单一顺序的控制流。 什么是进程? 进程是程序运行的过程。 1、进程与线程的关系: 1)线程是进程的最小执行单元; 2)一个进程中至少存在一个线程; 3)线程决定进程的生命周期 —— 一个线程启动,进程就开始执行;所有线程执行结束,这个进程执行结束; 4)多个线程共享一个进程的内存空间、一组系统资源。 2、进程与线程的区别: 1)每个进程都有自己的独立的内存空间、一组系统资源,而线程共享所属进程的内存空间、一组系统资源; 进程是独立的,同一个进程的线程是有联系的。 2)进程之间通信开销较大,线程之间通信开销较小。 3、多线程 一个进程中可以同时存在多个线程; 同一个进程中的多个线程之间可以并发执行; 多线程的执行方式:抢占式; 抢占CPU资源,计算机由CPU执行程序,只有拥有CPU资源的程序,才会被执行。 CUP资源:CUP的控制权,这个控制权具有时间性,时间长度是随机的;这段时间非常短

iOS_多线程三:NSOperation

 ̄綄美尐妖づ 提交于 2020-01-24 08:03:48
NSOperation 是一个抽象类,线程安全,不需要添加额外的锁 使用其子类:NSInvocationOperation 和 NSBlockOperation 1、NSInvocationOperation 一个对象,表示一个任务 默认在主线程中同步顺序执行,想要并发异步,需要搭配`NSOperationQueue`使用 同步/异步,通过设置最大并发数`maxConcurrentOperationCount`实现:1:同步 >=2:异步 默认:-1 异步(无穷大) 2、NSBlockOperation 一个对象,可以创建多个任务 blockOperationWithBlock 添加的任务默认在主线程中 addExecutionBlock 添加任务,会开启多个线程,并发执行 一、NSInvocationOperation 一个 NSInvocationOperation 对象表示一个任务,需要手动调用 start 开启。 NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(network:) object:@{@"name":@"moxiaohui"}]; [operation setName:@"moxiaoyan"];

多线程更新ui

*爱你&永不变心* 提交于 2020-01-13 02:42:10
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) , ^{ ..... dispatch_async(dispatch_get_main_queue(), ^{ [self createData]; NSIndexSet *index = [NSIndexSet indexSetWithIndex:1]; [_tableView reloadSections:index withRowAnimation:UITableViewRowAnimationNone]; }); }); 回到主线程更新tableview,否则更新很不及时 来源: https://www.cnblogs.com/ios-wyh/p/4301780.html

同步、异步、多线程

雨燕双飞 提交于 2020-01-09 18:35:07
关于Web开发里并发、同步、异步以及事件驱动编程的相关技术 1、异步、多线程、并行 异步、多线程、并行不是同一个概念 线程:是 进程 中某个单一顺序的 控制流 。 并行:是同一时刻有多条指令同时被执行, 异步:是让CPU暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到回调通知后,开始运行。 多线程将异步操作放入另一线程中运行,通过轮询或回调方法得到完成通知,但是完成端口, 由操作系统接管异步操作的调度,通过硬件中断,在完成时触发回调方法,此方式不需要占用额外线程。 异步最终的目的就是给我们带来更高效的时间效应,它是一种结果,而实现这个异步的可能是异步委托,线程池,线程等等,只不过是一种方法或途径罢了。 2、并行、并发 并行(parallelise)同时刻(某点),并发(concurrency)同时间(某段) 3、互斥、同步 互斥:进程间相互排斥使用临界资源;比如写操作; 同步:不是排斥关系而是依赖关系,前一个进程的输出是后一个进程的输入,当第一个进程没有结束时第二个进程必须等待,相互协同完成一些事情;具有同步关系的一组进程并发时发送的消息称为消息或者事件; 摘自: 并行和并发、同步和异步的区别 4、iOS之GCD iOS多线程--彻底学会多线程之『GCD』 并行队列+异步执行 串行队列+同步执行 并行队列+同步执行 串行队列+异步执行 5、其他 原文: 同步、异步

IOS多线程之NSThread

空扰寡人 提交于 2020-01-03 10:44:23
参考:http://blog.csdn.net/totogo2010/article/details/8010231 1 简介 NSThread: 优点:NSThread 比其他两个轻量级 缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销。 NSThread实现的技术主要有3种:Cocoa threads,POSIX threads,Multiprocessing Services,一般使用cocoa thread 技术。 2 使用方法 2.1两种创建方式: 1、[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil]; 2、NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:nil]; [myThread start]; 参数的意义: selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值。 target :selector消息发送的对象 argument:传输给target的唯一参数,也可以是nil 第一种方式会直接创建线程并且开始运行线程

iOS多线程技术—多线程简单介绍

别说谁变了你拦得住时间么 提交于 2019-12-24 03:03:28
iOS多线程技术—多线程简单介绍 一、进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ、Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 比如使用酷狗播放音乐、使用迅雷下载电影,都需要在线程中执行    3.线程的串行 1个线程中任务的执行是串行的 如果要在1个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务 也就是说,在同一时间内,1个线程只能执行1个任务 比如在1个线程中下载3个文件(分别是文件A、文件B、文件C) 二、多线程 1.什么是多线程 1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务 进程 ->车间,线程->车间工人 多线程技术可以提高程序的执行效率 比如同时开启3条线程分别下载3个文件(分别是文件A、文件B、文件C) 2.多线程的原理 同一时间,CPU只能处理1条线程,只有1条线程在工作(执行) 多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换) 如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象 思考:如果线程非常非常多