文章分类 - iOS基础
摘要:
iOS中的崩溃类型 在这里了解一下XCode用来表示各种崩溃类型的术语,补充一些这方面的各知识。崩溃通常是指操作系统向正在运行的程序发送的信号,所以我们在查看崩溃日志时,常常看到如下错误摘要:Application received signal SIGSEGV。一般来说,常见的崩溃类型有以下几种:
阅读全文

摘要:
整体概念 蓝牙连接发送数据流程 基础概念 BLE: 全称Bluetooth low energy ,蓝牙4.0设备,(因为低功耗) Central: 中心设备,发起蓝牙连接的设备(一般指手机) peripheral: 外设,被蓝牙连接的设备(一般是带蓝牙模块的硬件设备,如手环、音响等) Servic
阅读全文

摘要:NSDate 获取当前时间 要得到当前时间,创建1个NSDate对象就可以了,将这个对象输出,就是当前时间,得到的时间是格林威治的时间(GMT) 北京时间是GMT+8 NSDate *date = [NSDate date]; NSLog(@"%@",date); 格式化输出日期,指定日期输出的格式
阅读全文
摘要:通过信号量可以控制不同线程任务的执行顺序和依赖关系,从而达到线程同步的目的。 1.基本用法 ●dispatch_semaphore_create(value) 创建信号量,value一般情况下传0 ●dispatch_semaphore_wait() 等待信号量,会对信号量减1(value - 1)
阅读全文
摘要:复杂列表滑动优化(二) 上一篇主要是说了 CPU 相关的优化,这一篇我们讲讲 GPU 的 GPU 工作流水线 GPU的图形(处理)流水线完成如下的工作:(并不一定是按照如下顺序) 顶点处理: GPU读取描述3D图形外观的顶点数据,并根据顶点数据确定3D图形的形状及位置关系,建立起3D图形的骨架。在支
阅读全文
摘要:大家好,今天就讲讲iOS UI的一些优化知识点,平常也会遇到,就分享出来。 何时做优化 不提倡过渡、提前优化,在技术选型,框架做好之后先做设计还原,之后再看性能瓶颈,多看 Instruments,少猜测,如很多教程所言Instruments 可以看到卡顿时 GPU 和 CPU 的负载,现在还多了 D
阅读全文
摘要:今天简单讲讲OC对象的本质、类的本质、消息查找的原理,先简单回顾一下这些知识。 一、知识回顾 1.1 对象的本质 一旦一个对象的结构确定,它在内存中的结构也就被确定,在访问对象属性/成员时,会根据每个成员的大小,经过内存偏移来获取到该成员。 1.2 类的本质和方法查找 类是元类的实例,就像对象是类的
阅读全文
摘要:本篇文章从通过源码分析来研究其实现原理。GCD的源码在libdispatch库中实现的可以在Apple Open Source下载。 1.创建信号量 通过dispatch_semaphore_create(value)创建一个信号量: /*! * @function dispatch_semapho
阅读全文
摘要:Objective-C中,在声明属性时,通常会不假思索的使用nonatomic来修饰属性,但去面试的时候,总是被问到atomic,使我们不知从何说起,或者说只能简单的回答一句,atomic修饰的属性是「原子性」的,不能同时读写等。本篇文章就来探索一下atomic背后的原理。 1.寻找入口 因为声明属
阅读全文
摘要:一、进程与线程 1.1 进程 进程是系统进行资源分配和调度的基本单位,在iOS上,一个App运行起来的实例就是一个进程,每个进程在内存中都有自己独立的地址段。 1.2 线程 线程是进程的基本执行单元,进程中的所有任务都在线程中执行,因此,一个进程中至少要有一个线程。iOS程序启动后会默认开启一个主线
阅读全文