本节要点:
1.多线程的概念
2.掌握iOS中多线程的多种创建方式
多线程的概念
● 每个进程是一个应用程序,都有独立的内存空间
● 同一个进程中的线程共享其进程中的内存和资源
● 使用多线程技术,提高CPU的使用率,防止主线程堵塞。
● 多个线程可以提高应用程序在多核系统上的实时性能
● 每个程序都有⼀一个主线程,程序启动时,创建主线程,调用main 函数来启动程序。
● 主线程的生命周期和程序是绑定的,程序结束时,主线程停止。
● 任何有可能堵塞的任务不要在主线程执行,主线程不流畅会导致 程序界面的不流畅。(如:网络访问、大文件写入磁盘、
清理缓存,等等)
多线程的创建和启动
第1种方式
[plain] view plaincopy
- NSThread *t = [[NSThread alloc] initWithTarget:self selector:@selector(mutableThread) object:nil];
- [t start];
[plain] view plaincopy
- [NSThread detachNewThreadSelector:@selector(mutableThread) toTarget:self withObject:nil];
第3种方式
[plain] view plaincopy
- [self performSelectorInBackground:@selector(mutableThread) withObject:nil];
第4种block语法开启一个线程
[plain] view plaincopy
- NSOperationQueue *threadQueue = [[NSOperationQueue alloc] init]; [threadQueue addOperationWithBlock:^(void) {
- NSThread *t = [NSThread currentThread];
- if (![t isMainThread]) {
- NSLog(@"是多线程");
[plain] view plaincopy
- }
第5种方式线程池
[plain] view plaincopy
- NSOperationQueue *threadQueue = [[NSOperationQueue alloc] init]; NSInvocationOperation *op = [[NSInvocationOperation alloc]
- initWithTarget:self
- selector:@selector(mutableThread) object:nil];
- [threadQueue addOperation:op];
[plain] view plaincopy
- dispatch_queue_t network_queue;
- network_queue = dispatch_queue_create("com.myapp.network", nill);
- dispatch_async(network_queue, ^{
- UIImage *cellImage = [self loadMyImageFromNetwork:image_url];
- NSLog("多线程");
- } );
发表评论
-
如何使用AV Foundation从摄像头将视频帧捕获为图像
2012-11-15 17:21 7460如果译错,感谢指出。 英文原文地址:https://d ... -
iOS单元测试
2012-11-05 11:37 920转自:http://www.cnblogs.com/ke ... -
Core Data数据持久化的使用
2012-10-30 21:31 1050CoreData 是ios中用来对数据做持久化的一个框架 ... -
ASIHTTPRequest缓存策略的设置
2012-10-30 17:23 3876ASIHTTPRequest 是一款强大的网络请求框架,该框架 ... -
【无限互联】xcode自定义类的模板
2012-10-23 19:37 1161翻译:http://www.bobmccune.com/ ... -
【无限互联】适配iOS6和iPhone5屏幕
2012-10-23 18:05 24771. iOS6的mo模拟器比较大,通过comman ... -
【无限互联】mac下配置svn服务器
2012-10-22 13:30 773在mac下配置svn服务器其实很简单,只需要简单的几句命令就可 ... -
【无限互联】iOS开发block用法之UIAlertView控件的修改
2012-10-10 17:06 2689原始的UIAlertView的需要通过委托方法来实现按钮 ... -
Objective-C新特性
2012-09-05 14:38 707基于Xcode4.4(不完全独有)。1. 成员方法无需前置声明 ... -
iphone-NSDate日期处理
2012-08-31 16:25 1071NSDate存储的是世界标准时(UTC),输出时需要 ... -
iphone开发资源汇总
2012-08-31 16:16 1623如何用Facebook graphic api上传视 ... -
iOS-如何让xcode自动检查内存泄露
2012-08-31 16:05 1097在project-setting中找到 “Run Static ... -
UIScrollView的属性总结
2012-02-08 15:58 4434在滚动过程当中,其实是在修改原点坐标 当手指触摸后, scr ... -
iPhone开发之 ARC是什么
2012-01-17 16:58 1384相关链接:http://blog.csdn ... -
画图时 自己做的一小笔记
2012-01-07 21:02 9650 CGContextRef context = UIGra ... -
让Xcode 4.2生成的app支持旧版iOS设备(armv6)
2012-01-07 00:46 1339这几天遇到一个非常奇怪的问题,基于Xcode 4.2开发的ap ... -
5个开源库的JSON解析速度测试
2011-12-03 23:15 1460iOS5新增了JSON解析的API ... -
获取iOS设备当前ip地址
2011-11-17 23:16 1394第一种方法是用系统api的方式获取,如下 #include & ... -
Quartz 2D编程指南(2) - 图形上下文(Graphics Contexts)
2011-11-12 00:08 1456一个Graphics Context表示一 ... -
Quartz 2D编程指南(1) - 概览
2011-11-11 23:57 1720Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Ma ...
相关推荐
【标题】:“无限互联_IOS视频教程_OC教程_课件、源码”这一资源包主要针对的是iOS应用开发的学习,特别是Objective-C(OC)语言的教学。它包含了一系列的视频教程和配套的源码,旨在帮助初学者或者有经验的开发者...
"Mz"代表多线程架构,这是Cisco IOS的一种内存管理模型,它允许多个进程在不同的CPU内核上同时运行,提高系统性能。 在实际操作中,升级或恢复Cisco 7200路由器的IOS通常涉及以下步骤: 1. **准备工作**:首先,...
《无线互联Objective-C》这份资料深入浅出地涵盖了Objective-C这一iOS开发中的核心语言,旨在帮助初学者理解和掌握其精髓。下面将详细讲解其中涉及的关键知识点。 首先,我们来看看`chapter5_类别(Category)、...
学习如何使用Android SDK进行API调用,进行权限管理,并实现多线程和异步任务。 2. iOS开发:掌握Xcode IDE,理解Storyboard和AutoLayout,熟练使用Swift语言进行程序编写,理解MVC设计模式,以及Core Data或SQLite...
适配iOS和Android系统意味着开发者需要考虑两种平台的差异,如UI设计规范、内存管理、多线程处理等,并且可能需要使用跨平台框架如React Native或Flutter来简化开发过程。 总的来说,飞机即时通讯源码是一个包含...
鸿蒙OS2.0的发布标志着华为在操作系统领域迈出的重要一步,这不仅是对谷歌Android和苹果iOS系统的有力挑战,更是华为构建自身软件生态体系的关键里程碑。在这个“万物互联”的新时代,鸿蒙OS作为华为的软件生态基座...
4. **多线程处理**:求职者熟练掌握多线程操作,包括NSThread、NSOperation和Grand Central Dispatch (GCD),这对于优化应用程序性能和响应性至关重要。 5. **高级UI内容**:他精通内存管理,包括MRC(手动引用计数...
- **并发处理**: 多线程、回调机制、观察者模式、协程等技术都是实现异步编程的有效手段,能够显著提升应用的响应速度和用户体验。 #### 十二、性能优化 - **资源消耗**: 内存、CPU、电量、网络流量等方面的性能...
这需要工程师们具备扎实的分布式系统知识,包括但不限于网络通信协议、多线程编程以及数据同步机制等。 首先,鸿蒙工程师需要理解操作系统的基本原理,如进程管理、内存管理、文件系统以及设备驱动等。在鸿蒙系统中...
多线程的使用虽然方便,但同时也引入了许多问题,比如野指针、容器类崩溃、过度释放等。这些问题在多线程环境下尤为突出,可能导致应用崩溃,严重影响用户体验。为了解决这些问题,开发者可能会采用各种同步机制,如...
例如,Linux 内核支持多线程和并行计算,通过PVM、MPI、OpenMP等技术实现进程间通信和并行运算。此外,编译器和工具链(如gcc、binutils、gdb等)需要针对多核进行优化,以生成能够充分利用多核优势的代码。 在多核...
网易作为一家知名的互联网企业,其技术笔试环节通常会涵盖计算机科学、软件开发、算法设计、数据结构、网络协议、操作系统等多个方面的知识。因此,我们可以深入探讨这些领域的核心概念和重要知识点。 1. 计算机...
- **.NET 4.0**:2010年发布,带来了多线程和并行计算的支持,以及其他多项改进。 #### .NET 3.0/3.5/4.0的变化 - **WPF (Windows Presentation Foundation)**:一种全新的图形用户界面系统,支持基于XAML的标记...
此外,鸿蒙OS2拥有快速迭代的能力,通过华为的方舟编译器,开发者可以使用多种编程语言进行开发,并且能够实现一次编写,多端部署,大大降低了开发成本和时间。方舟编译器的引入,使得鸿蒙OS2对于应用开发者具有更高...
在移动应用开发领域,尤其对于iOS平台的应用程序而言,崩溃问题(Crash)一直是影响用户体验的重要因素之一。崩溃不仅可能导致用户流失,还可能损害品牌声誉及降低广告主对应用的信任度。在众多崩溃类型中,“Abort...
5. **多线程处理**:为了保证用户界面的流畅性,音频和视频的处理通常在后台线程中执行,避免阻塞UI主线程。 6. **同步机制**:多人聊天和会议需要考虑多用户间的同步问题,确保每个参与者都能准确无误地接收和播放...
总结来说,在Linux下实现音视频通讯需要理解Anychat for Linux SDK提供的API,熟悉音视频编解码原理,以及掌握网络编程和多线程技术。通过这些技术,开发者可以创建出高效、稳定的音视频通讯应用,满足不同用户的...
1. **软件生态建设**:华为通过开放 HarmonyOS 应用开发工具和API,鼓励开发者为鸿蒙系统开发应用,打造丰富的应用生态,以吸引更多的用户和企业采用鸿蒙系统。 2. **硬件合作伙伴拓展**:华为积极与各种硬件厂商...
首先,传统的多线程编程虽然方便,但容易导致一系列问题,如野指针、容器类崩溃和过度释放,这些问题在大型应用(如手机淘宝)中尤为突出。为了处理这些崩溃问题,开发者可能不得不牺牲应用性能,采用同步API可能...
1. **多屏播放**:支持Flash和HTML5播放,适配各种操作系统,如Windows、Android、iOS和Mac。 2. **自由组合**:与其他EasyDSS软件无缝对接,也可与第三方平台结合,提供灵活的集成方案。 3. **支持云架构**:可与...