iOS底层原理(七)多线程(中)

博主头像 多线程的安全隐患 一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源;当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 问题案例 卖票和存钱取钱的两个案例,具体见下面代码 static的问题 上面的 也可以用 来修饰作为内部静态变量来使用 由于 就是0,所以才可以用 来修饰 ...

iOS底层原理(七)多线程(上)

博主头像 基本概念 进程和线程 进程:进程是指在系统中正在运行的一个应用程序 线程:1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 一个进程(程序)的所有任务都在线程中执行 1个线程中任务的执行是串行的 进程和线程的比较 线程是CPU调用(执行任务)的最小单位 进程是CPU分配资源和调度的单 ...

iOS底层原理(六)RunLoop

博主头像 什么是RunLoop 从字面意思来看,就是运行循环的意思,其实就是在程序运行过程中循环做一些事情 RunLoop的应用范畴 下面几个技术都需要在 下才能进行 定时器(Timer)、PerformSelector GCD Async Main Queue 事件响应、手势识别、界面刷新 网络请求 Aut ...

iOS底层原理(五)Runtime(上)

博主头像 什么是Runtime 是一门动态性比较强的编程语言,跟 等语言有着很大的不同; 的动态性是由 来支撑的 提供的接口基本都是 的,源码由 编写 方法类型的底层结构 在 的底层结构 中,我们知道通过 就可以得到 类型的表结构 里面的 都是二维数组, 是可读可写的 ,包含了类的初始内容、分类的内容 以 举 ...

iOS底层原理(五)Runtime(下)

博主头像 动态方法解析 如果消息发送阶段不成功,那么就会进入到 【第一步】 我们还是先从 里找到函数 来看,分别对应着类对象和元类对象做了不同的调用处理 注意: 能调用到这里,说明已经找到基类的元类对象了,如果还是没有,那么就会去基类的类对象里找同名的对象方法,正好印证了之前分析的元类对象的 指向类对象的原理 ...

Android Activity之间的数据传递

博主头像 一、通过startActivity来进行Activity的传值 在Android中,如果我们要通过一个Activity来启动另一个Activity,可以使用 startActivity(Intent intent)方法来传入一个Intent对象,这个Intent对象我们可以精确的指定我们需要跳转的A ...

iOS-宫格拼图

博主头像 思路 要求设计思路是类似手持拼图游戏,拼图需求要求有一块为空白版,作为移动方块的预留位置用,通过选择图片后在起初对所有图像方块随机打乱顺序时,发现随机打乱顺序,没办法拼图完成,拼图移动是空白快最临近的上下左右四个图像块的移动,在打乱顺序的时候,也要按照这个算法逻辑实现,才能拼图完成; 另外逻辑实现上 ...

iOS底层原理(四)block

博主头像 block的本质 1. 的基本用法 2.将 代码转换成 后发现,生成了一个 类型的结构体, 是指向这个结构体的指针 3. 类型的结构体,里面包含了 类型的结构体变量 和`__main_block_desc_0 Desc __main_block_impl_0`类型的构造函数,还会生成一个age来存储 ...

从网络请求过程看OkHttp拦截器

博主头像 前言 之前我们结合设计模式简单说了下OkHttp的大体流程,今天就继续说说它的核心部分——拦截器。 因为拦截器组成的链其实是完成了网络通信的整个流程,所以我们今天就从这个角度说说各拦截器的功能。 首先,做一下简单回顾,从getResponseWithInterceptorChain方法开始。 简单回 ...

iOS底层原理(三)Category

博主头像 Category的本质 Category的底层结构 1.我们先给 增加一个 的分类 2.然后通过 转换成 ,发现内部会生成一个 类型的结构体 3.我们还发现会生成一个 结构体类型的变量,这个变量对应着该分类文件是 ,并且里面记录着所有的分类信息 4. 这个变量里面记录着分类的对象方法 和`eat1` ...

iOS底层原理(二)KVO和KVC

博主头像 KVO 的全称是 Key Value Observing ,俗称“键值监听”,可以用于监听某个对象属性值的改变 KVO的使用 可以通过 方法对属性发起监听,然后通过 方法中对应进行监听,见下面示例代码 注意: 监听的对象销毁之前要移除该监听 KVO的实现本质 1.通过上面示例代码发现,函数在调用 方 ...

iOS底层原理(一)Objective-C的本质

博主头像 我们平时编写的Objective C代码,底层实现其实都是 C\C++代码 ,所以Objective C的面向对象都是基于C\C++的数据结构实现的 OC对象的本质 Objective C的对象、类主要是基于 C\C++的结构体 实现的 通过下面的命令可以将OC代码转换为C++代码来查看 由于Cla ...

android ProgressBar(进度条)

博主头像 本节引言: 本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如 用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用到进度条;或者当在进行一些比较 耗时的操作,需要等待一段较长的时间,这个时候如果没有提示,用户可能会 ...

Android之AlertDialog的基本使用

博主头像 坦白说,AlertDialog我在工作中用得并不多,因为AlertDialog的样式比较固定和呆板,为了和App的整体设计匹配,一般都是使用自定义的Dialog,只有在要求不高时用一下。但是作为Android的基础控件之一,掌握它是十分有必要。网上相关的资料已经多如牛毛,一搜就有好几页。但我还是决定 ...

[iOS]dispatch_after()中self和weakself的使用

博主头像 苹果对编译器在不断优化,GCD方法中的block基本都不需要使用weakself,并不会造成循环引用。 dispatch_after官方文档中对block部分的说明: 一:使用self 从ViewControllerA push 到 ViewControllerB。ViewControllerB中代 ...

Swift 进阶(十七)源码分析

博主头像 我们通过分析 来更近一步了解Swift的语法 Array相关 map、filter 的源码路径: flatMap、compactMap、reduce 的源码路径: map filter compactMap reduce Substring相关 Substring 的源码路径: 初始化 append ...

edittext,bmob短信验证讲解

博主头像 1:edittext: 与TextView的区别就是edittext是可以被编辑的,与之前讲的视图所有的属性,它皆有: android:inputType="number" 文本的输入形式,下图中,除了TextView不是edittext之外,以下都是,inputType的模式就对应以下不同的格式的 ...

<1···456···200>