自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 iOS 沙盒

每个容器都有自己的功能。bundle 容器目录保存应用程序的包,而数据容器目录保存应用程序和用户的数据。处理方案:初始化时判断该文件是否存在,存在即将其copy一份存储在Documents/文件夹中,之后的读写操作都使用Documents/文件夹中的文件。需求场景:在公司引入的第三方库Doraemonkit中需要进行文件修改,其在项目中已经成为一个bundle文件了,上面说,bundle只可读不可写。所有的非代码文件都会保存在沙盒中,例如属性文件plist、文本文件、图像、图标、媒体资源等。

2023-04-03 10:24:27 367

原创 OC函数式编程和链式编程

特点:通过block实现,block做返回值//在分类方法 @interface NSString(Append) -(NSString *(^)(NSString * str)) appendString;return ^ {} @end // 需要调用的地方 -(void) funcCode {NSString * str = @"函数式";

2023-03-21 23:52:57 185

原创 计网协议总结

文章目录网络层IP地址和硬件地址ARP协议(地址解析协议)IP数据报ICMP报文ICMP差错报文ICMP询问报文ICMP的应用-PING路由选择协议内部网关协议RIP协议OSPF协议外部网关协议运输层进程间通信等概念用户数据报协议UDP特点首部格式传输控制协议TCP特点连接停止等待协议首部格式TCP可靠传输的实现滑动窗口流量控制拥塞控制连接管理这篇文章主要是为了面试整理的,不建议系统学习时看网络层IP地址和硬件地址物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种

2022-01-11 18:05:28 5296 4

原创 NSNotificationCenter底层探究

文章目录简单介绍及使用swift版使用ObjectiveC版使用底层NSNotificationCenter - 消息中心named表nameless表wildcard链表添加观察者发送通知移除通知参考文献简单介绍及使用通知,简单来说就是,一方使用name发送通知,持有与之相同name的另一方接收通知并进行处理(如果添加的观察者name为空,那么就会接收所有通知)。特点是基本上不用考虑其它影响因素,只需要使用同样的通知名称,监听该通知的对象(即观察者)再对通知做出反应即可。降低耦合度swift版使用

2021-04-21 17:58:17 588

原创 URL Scheme

文章目录前言简介概览细则URL Scheme的用法参考文献前言由于苹果推出了“沙盒机制”,各个APP之间不能互相访问,但是我们在使用时经常会出现APP之间跳转的情况,这就是URL Scheme的用处了简介URL Scheme类似于URL,可以通过该APP的URL Scheme来定位到该APP,当然定位只是最基本的用法概览things:///add?title=正文内容&note=备注连接头:things,它是启动一个应用的URL,比如:weixin连接头和命令之间的:,还有//或者

2021-04-06 14:18:55 594

原创 delegate、NSNotification、KVO、block

文章目录delegateNSNotificationKVOblock对比参考文献在iOS开发中,经常会碰到传值的问题,我们通常有四种方法来解决:delegate 代理委托NSNotification 通知KVO 键值观察block 闭包分别来说说使用它们的场景:delegate代理模式的基本使用流程是:一个controller定义了一个协议,协议里有若干个方法,一个对象如果想作为controller的delegate,就必须得实现这些方法,也就是controller委托另一个对象作为co

2021-03-31 12:35:00 163

原创 URL、URN和URI

文章目录URL(统一资源定位符)URN(统一资源名称)URI (统一资源标志符)URL、URN和URI的区别域名和IP地址的区别参考文献URL(统一资源定位符)URL是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址URN(统一资源名称)永久统一资源定位符,唯一标识一个实体的标识符,在资源移动之后还能被找到,作为特定内容的唯一名称使用的,与当前资源的所在地无关。使用URN,就可以将资源四处迁移,而不用担心迁移后无法访问URI (统一资源标志符)统一资源标志符U

2021-03-28 16:18:31 360

原创 CocoaPods

文章目录CocoaPods简介CocoaPods结构集成`CocoaPods`之后,只能使用`workspace``podfile.lock``manifest.lock`pod命令们`pod install ``pod repo update``pod update`今天碰到的问题参考链接CocoaPods简介在进行iOS开发的时候,一定离不开第三方库的使用,如果没有CocoaPods,我们将要进行的工作是:下载源代码引入工程向工程中添加开源库使用的framework解决依赖问题检查重复添

2021-03-24 17:22:15 347

原创 Charles抓包原理

文章目录先说HTTPS加密过程Charles原理先说HTTPS加密过程为什么需要证书加密?因为对称加密不安全,非对称加密计算量又很大,影响效率,所以采用这种第一次非对称之后都是对称的加密方法证书加密详细过程如下,参考网上一张图:客户端需要数据请求的时候,首先会给服务器发送HTTPS请求服务器响应后会将自己的证书发给客户端客户端生成一个随机密钥,用服务器的公钥对这个密钥进行非对称加密。将用服务器公钥加密的对称密钥发送过去服务器用私钥进行解密发送编码改变通知,表示随后的信息都将用双方

2021-03-23 17:30:06 173

原创 KVC原理及应用场景

文章目录KVC使用基本使用多重属性赋值字典转模型模型转字典KVC 原理调用`setValue:forKey:`方法顺序调用`Value:forKey:`方法顺序KVC使用基本使用声明的类:// .h文件@interface ModelStudent : NSObject@property (nonatomic, copy) NSString *name;@property (nonatomic, assign) NSInteger sex;@end// .m文件#import "

2020-11-09 21:24:28 313

原创 KVO的使用和本质

文章目录KVO的使用添加KVO后改变KVO本质手动调用KVO参考文献KVO的使用之前写过关于KVO原理的文章,最近在复习这里,再回去看感觉不是很清晰,就再写一篇吧KVO的全称是Key-Value-Observing,人称键值监听,就是监听某个对象属性值的改变KVO的使用很简单,其实就是给某个属性添加一个监听者,然后这个属性的值改变后,触发回调方法 self.student1 = [[ModelStudent alloc] init]; _student1.age = 10;

2020-11-05 19:02:29 203

原创 iOS 单例

参考文献iOS-单例的正确写法文章目录参考文献介绍单例单例的代码实现不使用GCD的方式使用GCD关于allocWithZone:介绍单例单例类,在整个项目中只有一个实例,并提供一个类方法供全局调用,在编译时初始化这个类,然后一直保存在内存中,到程序退出时由系统自动释放这部分内存一般在程序中,经常调用的类,如工具类、公共跳转类等都会采用单例模式在程序中,一个单例类在程序中只能初始化一次,为了保证在使用中始终都是存在的,所以单例是在存储器的全局区域,在编译时分配内存,只要程序还在运行就会一直占用内

2020-11-01 17:16:50 422 1

原创 GCD的使用

文章目录线程和队列的关系队列创建队列获取标记符任务创建(dispatch_sync和dispatch_async)线程和runloop队列使用时可能用到的其他APIdispatch_set_target_queue变更队列优先级dispatch_barrier_async 栅栏方法dispatch_after 延时执行方法dispatch_once 一次性代码(只执行一次)dispatch_apply 快速迭代方法dispatch_group 队列组dispatch_group_notify 监听dispa

2020-09-23 13:23:11 344

原创 Category探究

文章目录Category的介绍Category的使用根据Category源码进行剖析Category的特点关于添加属性方法重名参考文献Category的介绍Category是Objective-C 2.0之后添加的语言特性。分类、类别其实都是指的Category。Category的主要作用是为已经存在的类添加方法。也可以说是将庞大的类代码按逻辑划入几个分区。Objective-C 中的 Category 就是对装饰模式的一种具体实现。它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法

2020-09-21 19:29:16 160 1

原创 iOS以实例讲解响应者链

文章目录什么是响应者链响应者 Responder之前讲过响应者链的概念、程序和作用,但感觉有点枯燥,不太好理解。这篇博客用一个小demo来讲解一下方法借鉴自:iOS开发 - 事件传递响应链和iOS响应者链彻底掌握什么是响应者链iOS响应者链(Responder Chain)是支撑App界面交互的重要基础,点击、滑动、旋转、摇晃等都离不开其背后的响应者链,所以每个iOS开发人员都应该彻底掌握响应者链的响应逻辑,本文旨在通过demo测试的方式展现响应者链的具体响应过程,帮助读者彻底掌握响应者链。响应者

2020-08-06 18:11:11 611

原创 使用Runtime运行时方法修改系统自带UI控件方法

引出我们在写APP时有时需要查看是否调用了该方法,而对于系统自带的UI控件,我们一般无法修改其方法或者修改之后会不按照你的想法运行,这时我们就想自己去写一个方法去替换它方法例如我们想修改UIView的 hitTest:withEvent: 方法,得创建一个UIView的分类,这里我叫ChangeMethod先自己将要实现的方法写好,然后使用Runtime运行时方法 method_exchangeImplementations 交换#import "UIView+ChangeMethod.h"#i

2020-08-06 09:37:28 207

原创 iOS 消息机制与三次拯救

文章目录消息机制 objc_msgSend();函数引出执行过程第一阶段 -- 消息发送第二阶段 -- 动态方法解析第三阶段 -- 消息转发Fast fowardingNormal forwarding三次拯救参考文献消息机制 objc_msgSend();函数引出我们写一句OC代码Person *person = [Person alloc];转译为cpp文件就是Person *person = ((Person *(*)(id, SEL))(void *)objc_msgSend)((id

2020-08-04 19:52:22 398

原创 NSTimer循环引用分析

文章目录NSTimer介绍循环引用问题创建循环引用处理办法方案一:中间代理对象方案一升级版关于NSProxy类的补充方案二:将timer引用改变方案三:使用Category参考文献NSTimer介绍官方文档经过一定时间间隔后将触发的计时器,会将指定的消息发送到目标对象官方文档中给了三种创建定时器的方法:使用类方法创建计时器,并在默认模式下将其安排在当前运行循环上:scheduledTimerWithTimeInterval:invocation:repeats:scheduledTime

2020-08-03 21:15:55 748

原创 RunLoop之线程保活

文章目录为什么需要线程保活线程保活的操作关于run方法的疑问RunLoop的启动方法RunLoop的关闭方法线程保活的分析及代码参考文献为什么需要线程保活在iOS项目中,有时会有一些花费时间较长的操作阻塞主线程,我们通常为了防止界面卡顿,将其放入子线程中运行。根据线程知识,如果子线程执行完分配的任务后,就会自动销毁。比如我们现在定义一个线程,改写它的dealloc方法,观察它什么时候销毁@implementation TAYThread- (void)dealloc { NSLog(@"

2020-08-02 00:17:59 2991

原创 RunLoop源码详解

文章目录RunLoop是什么NSRunLoop和CFRunLoopRunLoop内部结构RunLoop源码__CFRunLoop结构体__CFRunLoopMode结构体__CFRunLoopSource结构体CFRunLoopSourceContextCFRunLoopSourceContext1__CFRunLoopTimer结构体__CFRunLoopObserver结构体RunLoop是什么如果没有RunLoop,那么该线程在执行完自己的任务时就会退出;而我们在使用APP时,通常不会只执行完一个

2020-07-31 21:21:59 778 4

原创 Runtime学习之weak原理

文章目录两行代码查看源码_objc_initWeakstoreWeakweak_register_no_lockweak_unregister_no_lockSideTableweak_table_tweak_entry_t参考文献两行代码Person *person = [[Person alloc] init];id __weak a = person;查看汇编得知调用了_objc_initWeak和_objc_destroyWeak函数查看源码_objc_initWeak//loca

2020-07-29 09:34:40 430 3

原创 ARC探究

文章目录问题1概述问题1解答问题2说明问题1概述MRC环境下,[NSMutableArray array]相当于[[[NSMutableArray alloc] init] autorelease],即两者都会加入自动释放池中:但是对于NSArray,两者都不会加入自动释放池:问题1解答经过试验,我发现NSString和NSMutableString的结果也不一样,猜想对于不可变对象,非alloc\new\copy\mutableCopy方法可能不相当于调用了autorelease方法,也许与

2020-07-19 22:11:33 165

原创 内存管理之MRCARC

文章目录内存管理(引用计数)自己生成的对象,自己所持有非自己生成的对象,自己也能持有不再需要自己持有的对象就将其释放自己生成并持有的对象非自己生成并持有的对象注意非自己持有的对象无法释放释放两次本就不持有retainCountautorelease使用方法适用场景其他方法showPoolsARC自动引用计数所有权修饰符__strong修饰符__weak修饰符__unsafe_unretained修饰符__autoreleasing修饰符一些规则ARC有效时,不能使用retain或者release遵守命名规则

2020-07-14 17:26:37 534

原创 ERROR SparkContext: Error initializing SparkContext.

在Intellij idea中测试写好的Spark程序,运行时报如下错误:Using Spark’s default log4j profile: org/apache/spark/log4j-defaults.properties20/06/14 21:45:56 INFO SparkContext: Running Spark version 2.3.420/06/14 21:45:57 ERROR SparkContext: Error initializing SparkContext.or

2020-06-14 21:52:48 5020

原创 记录课设中出现的问题

作为一名大数据初学者,大数据课设时踩了不少坑,将所有亲测有用的方法记录下来配置IDEAIDEAIDEA报Unable to import Maven project See logs for details错误:IDEA MAVEN报UNABLE TO IMPORT MAVEN PROJECT: SEE LOGS FOR DETAILS解决方法IDEA装Scala报Plugin Error: Plugin “Scala” is incompatible (until build 193.0 <

2020-06-13 21:04:31 252

转载 Windows的cmd中cd指令切换路径

Windows的cmd中cd指令无法转换路径怎么办?1,首先我们看看盘符,我的电脑里有 C D E盘。2,按下WIN+R键 输入cmd,打开cmd窗口。3,默认路径为用户文档路径,如果想切换到D盘 ,输入cd d:是不行的。4,AppData是C盘里的一个目录,如果用cd指令想切换到这个目录之下是可以的。5,如果我们要切换盘符的目录,正确的用法是在cd 和路径中间 增加一个’/d’cd /d d:6,当我们要切换盘符时,可以不用cd指令 直接用 盘符:例如e:7,那CD命令倒底有什么用

2020-06-10 23:37:37 1361

原创 GCD简介

1. 什么是GCDGCD,全称是Grand Central Dispatch,它是C语言的API.GCD的核心 : 将block(任务)添加到queue(队列)中.官方文档的描述:Grand Central Dispatch(GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并执行任务,这样就比以前的线程更有效率.2.日常使用 dispatch_queu

2020-05-31 23:31:10 16726

原创 iOS 自定义手势

前言最近写的项目有一个手势需求:手势右滑触发已背诵过事件。了解了一下手势的用法代码全局手势.h文件中定义一个全局手势属性@property (nonatomic, strong) UIPanGestureRecognizer *panGestureRecognizer;.m文件:如果使用到这个ViewController的地方都需要它的手势的话,这段代码写在 -(void)viewWillAppear:(BOOL)animated 也可我这个ViewController可以被两个界面调用,

2020-05-24 01:58:25 737

原创 协议与分类

文章目录协议通过委托与数据源协议进行对象间通信协议OC语言中有一项特性叫做“协议”,与Java中的“接口”类似。OC不支持多重继承,因而我们把某个类应该实现的一系列方法定义在协议里面。协议最为常见的用途是实现委托模式,当然也有其他用法通过委托与数据源协议进行对象间通信对象之间经常需要互相通信,而通信方式有多种。OC开发者广泛使用一种名叫“委托模式”的编程设计模式来实现对象间的通信。该模式的...

2020-05-02 23:58:25 478

原创 iOS NSUserDefaults

前言我们在使用APP时常用的一个功能:用户第一次进入APP时自动进入登录注册界面,提示用户注册登录,用户登录成功后才进入主页,再次进入APP时,不用再次登录就直接进到主页了,就算杀掉该APP进程再次进入,依然进入主页.苹果给我们iOS开发者提供了一个NSUserDefault类,用来持久化存储用户的登录信息,只有卸载APP才能抹掉这些登陆信息.简介NSUserDefaults用来存储 用户...

2020-04-28 17:19:01 775

原创 Blocks的实现

文章目录Block的实质__block说明符Block循环引用block的copy/release我们先回顾一下Block类型copy/release在ARC环境下,编译器会自动根据情况将栈上的block复制到堆上,比如以下情况block作为函数返回时在Block中使用附有__strong修饰符的对象类型自动变量block作为CocoaAPI中方法名含有usingBlock的方法参数时block作...

2020-04-06 22:35:34 310

原创 iOS 响应者链和事件传递

文章目录iOS事件传递过程响应者链过程示意图代码实现UIResponder 响应者对象UIResponder内部提供的响应和处理事件的方法UITouch介绍主要属性和方法UIEvent介绍主要属性和方法UIView不能接收事件的三种情况参考文献iOS事件触摸事件(touch events)按压事件(press events)摇晃事件(shake - motions events)远程控...

2020-04-05 02:25:14 361

原创 ARC简介

文章目录简单介绍引用计数以ARC简化引用计数简单介绍引用计数OC语言使用引用计数来管理内存,也就是说,每个对象都有个可以递增或递减的计数器。如果想使某个对象继续存活的话, 那就递增其引用计数;用完了之后,就递减其引用计数。计数变为0,就表示没人关注此对象了,于是,就可以把它销毁。在对象生命期中,其余对象通过引用来保留或释放此对象。保留与释放操作分别回递增及递减保留计数。以ARC简化引用计数...

2020-04-03 01:54:08 534

原创 LeetCode 169 多数元素(哈希表/排序/摩尔投票) Java

文章目录题目示例思路一(HashMap)代码实现思路二(排序法)代码实现思路三(摩尔投票法)代码实现题目169.多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。这是力扣今天的每日一题,看到的第一反应就是用HashMap,做出来后看题解才发现HashMap有点low了…...

2020-03-13 02:13:49 261

转载 Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决

原文链接:Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决 ...

2020-03-12 16:16:40 6447 1

原创 LeetCode 3 无重复字符的最长子串 C语言

文章目录题目示例 :思路一(双层循环)代码实现思路二(单层循环)代码实现题目3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 :示例1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以...

2020-03-08 22:59:12 503

原创 LeetCode 202 快乐数 C语言

题目202.快乐数编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + ...

2020-03-08 22:09:42 509

原创 iOS 按钮加下划线随之移动

文章目录效果图自定义的Viewbutton被点击后执行点击事件,利用selectedIndex的set方法改变下划线位置使用及button的自定义点击事件添加参考文献效果图自定义的View在自定义View里写好button及下划线,使用时直接调用View即可#define UNDERLINETAG 2000#define UNDERLINEDISTANCE 10#define UN...

2020-03-01 22:36:22 670

原创 iOS KVO原理

文章目录举个例子问题KVO底层实现分析证明NSKVONotifying_TPerson类的内部方法验证didChangeValueForKey:内部会调用KVO的实现方法参考文献举个例子@interface TPerson : NSObject@property (assign, nonatomic) int age;@end@implementation TPerson- (vo...

2020-02-16 15:42:12 266 3

转载 git push 报错"Updates were rejected because the tip of your current branch is behind"

在Android源码的修改过程中,在把本地的分支push到服务器的时候遇到如下错误:error: failed to push some refs to '[email protected]:/home/wsq/Extend/wsq/android/sprd/src/sc7731/android6.0/sc7731_m'hint: Updates were rejected because t...

2020-02-06 23:44:00 428

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除