![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
文章平均质量分 77
c_xie
这个作者很懒,什么都没留下…
展开
-
ios多线程操作(七)—— GCD延迟操作与一次性代码
使用GCD函数可以进行延时操作,该函数为dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ }); 现在我们来分解一下参数dispatch_time(DISPATCH_TIME_N原创 2015-03-21 21:55:23 · 2679 阅读 · 0 评论 -
ios多线程操作(九)—— 用NSOperation代替GCD
NSOperation是另外一个“并发技术”,它可以使开发者在不用关心线程的情况下进行多线程操作!!! NSOperation的底层是用GCD进行封装,但并不是说NSOperation功能就没有GCD强大,相反,NSOperation的一些高级功能在GCD上不好做,但同样地GCD上的一些高级功能在NSOperation上也不好做,现在来看一下NSOperation和GCD的对比!原创 2015-03-22 21:23:54 · 1360 阅读 · 0 评论 -
ios多线程操作(十)—— 用NSOperation开启多线程操作
想要使用NSOperation(操作)来开启多线程操作必须配合NSOperationQueue(队列)来实现。NSOperation中并没有“任务”这个概念,取而代之的是“操作”,操作中封装着需要在子线程上执行的代码。具体的实现步骤如下: 1、先将需要执行的操作封装到一个NSOperation对象中 2、然后将NSOperation对象添加到NSOperationQueue原创 2015-03-22 22:30:49 · 783 阅读 · 0 评论 -
ios多线程操作(八)—— GCD调度组
有这么一个需要,分别执行2个耗时的异步操作,等2个异步操作都执行完毕后在回到主线程执行操作。如果想要快速高效地实现这个需求,可以考虑使用调度组。调度组的创建代码如下:dispatch_group_t group = dispatch_group_create();往调度组里面添加任务的函数如下:dispatch_group_async(dispatch_group_t group,原创 2015-03-22 19:22:00 · 2914 阅读 · 0 评论 -
ios多线程操作(十一)—— NSOperation的高级操作
NSOperation可以调用start方法来执行任务,但默认是同步执行的,如果将NSOperation添加到 NSOperationQueue(操作队列)中,系统会自动异步执行队列中的操作。 NSOperationQueue中可以对操作进行取消,暂停和恢复 取消函数为: - (void)cancelAllOperations; 也可以调用N原创 2015-03-24 23:09:36 · 1273 阅读 · 1 评论 -
使用FMDB框架来操作数据库
一、什么是FMDBFMDB是iOS平台的SQLite数据库框架,以OC的方式封装了SQLite的C语言API二、FMDB的优点1、使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码2、对比苹果自带的Core Data框架,更加轻量级和灵活3、提供了多线程安全的数据库操作方法,有效地防止数据混乱三、FMDB的三个主要类1、FMDatabase一个FMDatab原创 2015-04-22 08:51:14 · 1183 阅读 · 0 评论 -
IOS SQLite3的使用
一、什么是SQLIte SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了。它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快二、数据库存储数据的步骤1、新建一个数据库2、新建一张表(table)3、添加多个字段(column,列,属性)4、添加多行记录(row,每行存放多个字段对应的值原创 2015-04-21 22:34:48 · 2144 阅读 · 0 评论 -
SQLite的基本封装
当我们使用SQLite时,都需要先创建数据库创建数据表,再执行相应地sql语句,这样不利于对数据库操作进行统一管理,也不符合面向对象的思想,当我们的需求发生改变时,例如数据库表名改了,或者是要添加几个字段,这时候就会出现一种四处找数据库操作代码的情况,如果是一处两处还好,但如果是上百处,那就会是一个很大的工作量。所以我们可以来定义一个工具类SQLManager,统一对数据库操作进行管理。原创 2015-04-22 00:36:43 · 1043 阅读 · 0 评论 -
IOS系统自带社交分享
很多APP中都带有社交分享功能,通过用户的分享,让更多地人去了解和使用这个APP,目前社交分享是移动互联网应用程序推广的最重要手段之一,国内较或的分享平台有微信,IOS6后苹果集成的新浪微博,还有IOS7后集成的腾讯微博。 在IOS中,实现社交分享可以自己编写各个平台的分享代码,但代码量较多,也可以利用IOS自带的Social.framework,更可以利用第三方的分享框架,如友盟,S原创 2015-04-29 23:00:00 · 1679 阅读 · 0 评论 -
2018 WWDC CoreData 最佳实践总结
Core Data Best Practice基础知识1、What is Core Data? Core Data 其实并不是一个传统意义上的数据库,而是一套数据对象管理系统。这套系统默认使用 SQLite 作为底层存储,由低向高构建一套管理组件栈,并提供缓存和对象管理机制2、基本概念NSManagedObject 托管对象 Managed Ob...原创 2019-09-19 00:14:31 · 310 阅读 · 0 评论 -
Object - C运行时应用(三)——实现NSCoding的自动归档和自动解档
当我们需要将一个对象进行归档时,都要让该对象的类遵守NSCoding协议,再实现归档和接档方法。例如有一个Person类,该类有两个成员变量@property (nonatomic,copy) NSString *name;@property (nonatomic,assign) int age;两个协议的实现方法如下/** * 将对象写入某个文件时需要调用,在该方法中说明哪原创 2015-03-16 21:41:01 · 1174 阅读 · 0 评论 -
ios多线程操作(一)—— 多线程基础与原理
一、进程 进程是指在系统中正在运行的一个应用程序,每个进程之间都是独立的,每个进程都运行在其专用且受保护的内存空间内二、线程 一个进程要想执行任务就必须要有线程,每一个进程至少都要有一条线程。 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行。 线程又分为主线程和子线程: 主线程:一个ios程序运行后,默认会开启一条原创 2015-03-17 22:10:11 · 1055 阅读 · 0 评论 -
ios多线程操作(十二)—— 自定义NSOperation实现网络下载后回调
NSoperation作为一个抽象类,本身不具备封装操作的能力,所以必须使用它的子类来实现多线程操作,但当子类也无法达到我们的需求时,我们可以自定义一个NSoperation的子类,自己写实现方法! 自定义NSoperation的步骤很简单,只要重写main方法,在里面实现想执行的异步任务,但如果是异步操作,也就无法访问到主线程的自动释放池,所以需要自己手动创建自动释放池!原创 2015-03-25 19:06:39 · 1716 阅读 · 0 评论 -
ios多线程操作(四)—— GCD核心概念
GCD全称Grand Central Dispatch,可译为“大派发中枢调度器”,以纯C语言写成,提供了许多非常强大的函数。GCD是苹果公司为多核的并行运算提出的解决方案,它可以自动利用更多的CPU内核来参与运算,会自动管理线程的生命周(创建线程、调度任务、销毁线程),而程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码! GCD中有两个核心概念,一是任务,二是队列。原创 2015-03-19 20:50:37 · 1142 阅读 · 0 评论 -
ios多线程操作(三)—— 线程通讯
一个进程中,线程并非单独存在,往往需要与其他线程进行通讯以执行特定的任务。接下来就用一个简单的例子来实现线程之间最简单的通讯,并借此探究一下UI控件下得常见设置 需求:从网络上下载一张图片在屏幕上显示,图片可以滚动,可以捏合缩放大小 项目开搞新建一个新项目。因为视图有滚动的需求,所以需要添加一个UIScrollView以及一个显示图片的UIImageView@i原创 2015-03-18 22:32:12 · 827 阅读 · 0 评论 -
ios多线程操作(五)—— GCD串行队列与并发队列
GCD的队列可以分为2大类型,分别为串行队列和并发队列 串行队列(Serial Dispatch Queue): 一次只调度一个任务,队列中的任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务) 创建一个队列 dispatch_queue_t q = dispatch_queue_create(const char *label, disp原创 2015-03-19 21:53:14 · 9978 阅读 · 0 评论 -
Object - C运行时应用(二)—— 使用对象关联为分类增加属性(每个对象的属性互不干扰)
一、对象的关联方法有1、 void objc_setAssociatedObject(id object, const void *key, id value,objc_AssociationPolicy policy) ,关联对象(将值value与对象object关联起来)参数key:将来可以通过key取出这个存储的值参数policy:存储策略(assign、copy、ret原创 2015-03-16 20:50:02 · 837 阅读 · 0 评论 -
ios多线程操作(二)—— NSThread的应用
一、基本使用1、三种创建子线程的方法(1)NSThread直接创建,一个NSThread对象就代表一条线程//实例化一个 NSThread对象 NSThread *t1 = [[NSThreadalloc]initWithTarget:selfselector:@selector(longOperation:)object:@"NSThread"];原创 2015-03-17 23:30:28 · 1000 阅读 · 1 评论 -
ios多线程操作(六)—— GCD全局队列与主队列
GCD默认已经提供了全局的并发队列供整个应用使用,所以可以不用手动创建。 创建全局队列的函数为dispatch_queue_t q = dispatch_get_global_queue(long identifier, unsigned long flags) 参数类型为:long identifier:ios 8.0 告诉队列执行任务的“服务质量 quality原创 2015-03-20 21:07:44 · 6997 阅读 · 0 评论 -
Object - C运行时应用(一)—— 拦截系统自带的方法交换实现
一、什么是运行时 运行时是一套纯C语言的API,编译器最终都会将OC代码转化为运行时代码。二、运行时常用函数1、* 获得某个类的类方法 Method class_getClassMethod(Class cls, SEL name)* 获得某个对象的对象方法 Method class_getInstanceMethod(Class cls, SEL name)* 交原创 2015-03-16 19:52:24 · 1448 阅读 · 0 评论 -
iOS 相机开发总结
# Camera 组件讲解IOS相机## UIImagePickerController1.IOS中扑捉照片和视频最简单的方法是使用UIImagePickerController,一个封装了完整视频捕获管线和相机 UI 的 view controller。2.UIImagePickerController通过cameraOverlayView自定义UI(需要...原创 2019-09-19 00:19:41 · 1072 阅读 · 0 评论