iOS基础知识
jgl357
iOS开发,移动专家.java开发,让移动端开发更简洁
展开
-
iOS组件化简述
iOS应用架构谈 组件化方案:https://casatwy.com/iOS-Modulization.html1.组件化有什么好处?业务分层、解耦,使代码变得可维护; 有效的拆分、组织日益庞大的工程代码,使工程目录变得可维护; 便于各业务功能拆分、抽离,实现真正的功能复用; 业务隔离,跨团队开发代码控制和版本风险控制的实现; 模块化对代码的封装性、合理性都有一定的要求,提升开发同...原创 2019-11-01 11:37:16 · 482 阅读 · 0 评论 -
iOS基础总结一(KVC、KVO简述)
1.KVC实现原理KVC,键值编码,使用字符串直接访问对象的属性; 底层实现,当一个对象调用setValue方法时,方法内部会做一下操作:(1)检查是否存在相应key的set方法,如果存在,就调用set方法;(2)如果set方法不存在,就会查找与key相同名称且带下划线的成员属性,如果有,则直接给成员属性赋值;(3)如果没有找到_key,就会查找相同名称的属性key。如果有,就直...原创 2019-11-01 10:51:44 · 215 阅读 · 0 评论 -
iOS基础总结一(UIKit、Foundation)
1.如何实现一个线程安全的NSMutableArray?NSMutableArray是线程不安全的,当有多个线程同时对数组进行操作的时候,可能会导致崩溃或者数据错误。实现方案:线程锁:使用线程锁对数组的读写操作进行加锁; 派发队列:使用“串行同步队列”(serial synchronization queue),将读取操作及写入操作都安排在同一个队列里,即可保证数据同步。而通过并发队...原创 2019-11-01 10:01:09 · 328 阅读 · 0 评论 -
iOS 多线程
1.进程与线程进程:(1)进程是一个具有独立功能的程序关于某次数据集合的一次运行活动,他是操作系统分配资源的基本单位;(2)进程是指在系统中正在运行的一个应用程序,就是一段程序的执行过程,手机里的APP 就是一个单独的进程;(3)每个进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内,拥有独立运行所需要的全部资源;线程(1)程序执行流的最小单位,线程是...原创 2019-11-01 13:36:20 · 173 阅读 · 0 评论 -
Block 的本质是什么
block是一个指针结构体,在终端下通过clang -rewrite-objc 指令看看C++代码。#import <Foundation/Foundation.h>int main(int arc,const char *argv[]){ void (^myblock)() = ^(){ NSLog(@"hello block"); }; ...转载 2018-10-22 13:27:57 · 1001 阅读 · 0 评论 -
UITableView delegate/dataSource方法执行顺序
第一轮: 1、numberOfSectionsInTableView :假如section=2,此函数只执行一次,假如section=0,函数不执行,默认为1 2、heightForHeaderInSection ,执行两次,此函数执行次数为section数目 3、heightForFooterInSection ,函数属性同上,执行两次 4、number...转载 2018-02-02 10:01:18 · 1108 阅读 · 0 评论 -
KVO、Notification、delegate、block 各自的优缺点,效率还有使用场景
KVO、Notification、delegate、block 各自的优缺点,效率还有使用场景在开发iOS应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信。在iOS应用不断的出现三种模式以及一种回调来实现这种通信:1.委托 delegation;2.通知中心 Notification Center;3.键值观察 key value...转载 2018-01-17 14:50:08 · 3389 阅读 · 0 评论 -
Category 使用和优缺点
iOS 开发中,不可避免的用到Category1、什么是Category?分类就是对一个类的功能进行扩展,,让这个类能够适应不不同情况的需求.在一般的实际开发中,我们都会对系统的一些常用类进行扩展,比如,NSString,Button,Label等等,简单来说类别是一种为现有的类添加新方法的方式。利用OC的动态运行时分配机制,Category提供了一种比继承更为简洁的方法来对类进行扩展...转载 2018-01-31 11:26:13 · 11112 阅读 · 1 评论 -
http + restful简介
1原理1.1 简介Http协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:WorldWide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件, 图片文件, 查询结果等)。http的工作原理HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过U...原创 2019-06-13 17:34:29 · 7114 阅读 · 0 评论 -
怎么解决UITableView 滑动卡顿问题
1.最常用的就是cell的重用, 注册重用标识符如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell如果有很多数据或者滚动cell的时候,就会堆积很多cell。如果重用cell,为cell创建一个ID每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell2.避免cell的重新布局cell的布局填充等操转载 2018-01-15 13:05:13 · 1896 阅读 · 0 评论 -
iOS 容错处理机制
app开发过程中,我们可能遇到很多崩溃,都可以根据崩溃日志进行修复,但很多时候,一些不确定数据(服务端数据)可能会导致一些意外的崩溃,但对于一个好的应用来说,崩溃率是有严格限制的,因此,很多时候需要预防一些常见崩溃1.数组越界------对于一个应用来说,数组的使用是很普遍的,而然很多时候,我们不好使用每个数组前,都对数组进行判断,防止越界。此时,可以通过对数组进行类目扩展,在类目中,对数组进...原创 2018-09-23 00:04:59 · 1359 阅读 · 0 评论 -
iOS 常见宏定义
OC中,使用一些宏定义能够减少代码,方便使用,以下为我项目中定义的宏//自定义颜色#define RGB(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(1)];#define RGBA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 g...原创 2018-01-23 12:01:31 · 682 阅读 · 0 评论 -
App启动的完整过程
1. App启动过程 • 解析Info.plist ▪ 加载相关信息,例如如闪屏 ▪ 沙箱建立、权限检查 • Mach-O加载 ▪ 如果是胖二进制文件,寻找合适当前CPU类别的部分 ▪ 加载所有依赖的Mach-O文件(递归调用Mach-O加载的方法) ▪ 定位内部、外部指针引用,转载 2018-01-15 11:58:00 · 509 阅读 · 0 评论 -
copy,strong,retain,weak和assign的区别
前言: 在初学iOS的时候,对于用什么关键词去修饰property,知其然而不知其所以然,大家都这么用,就这么用,不知道其原理。后来慢慢了解,看了大量的博客和自己慢慢的总结,摘抄了部分我理解的博客内容,内容基本属于前人总结,自己手动写一遍也是为了加强自身理解。在知道他们的区别之前,我们首先要知道NSObject对象的赋值操作做了那些操作。A=C其实是在内存中创建一个A,然后又开辟了一个...转载 2018-01-22 11:43:40 · 814 阅读 · 0 评论 -
iOS weak 实现原理
weak 关键字的作用弱引用,所引用对象的计数器不会加一,并在引用对象被释放的时候自动被设置为nil.如何实现 weak 现在我们将 weak 的思路整理一下: 整个系统中存在很多个对象,这些对象都可能会被弱引用,那么我们需要一个容器来容纳这些被弱引用的对象,比如数组,在此将这个容器的数据结构标识为 objectContainerDataStructure; 一个对...转载 2018-09-23 00:08:23 · 634 阅读 · 0 评论