自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IOSSHAN的博客

坚持原创

  • 博客(247)
  • 收藏
  • 关注

原创 优秀的iOS博客

收集一批优秀的iOS博客,不断更新招聘一个靠谱的 iOS百度大佬出的一些面试题唐巧的博客 做iOS的没几个不知道他的杨萧玉 哈工大毕业,腾讯大佬招聘一个靠谱的 iOS百度大佬出的一些面试题《招聘一个靠谱的iOS》面试题参考答案 有问就有答...

2020-05-25 15:18:07 518

原创 坚持写博客

之前自己学习工作中很少去写博客,一是懒(嗯,最主要的),二是觉得自己遇到不会的问题可以上网搜一下,虽然有的答案明显就不对,但是,你找半天,总会找到解决方法。再有就是学习新的东西,也是自己网上找找博客就可以了,人家都写过了,干嘛还要自己写呢?大家写来写去都是那些东西,又有什么意思呢?后来,在聊天群里看到了这张图瞬间觉得,博客,还得写!写博客不仅是让别人看,让别人少走弯路,更重要的是,自己的总结...

2019-03-22 09:42:39 256

原创 Swift知识点(五)

以上几种方法,都是自定义函数方法,哪用去哪写这种方法,属性名没有特殊标识,有可能String里面有一个numberCount,会造成覆盖因此,最好命名为,这种好改如果可以这样调用更好,看着像是私有库里面的方法这种做法好是好,但还有缺点,只有String的扩展,如果以后是数组或者其他类型求里面的数字个数,还要写其他的。上述,使用泛型,做到不需要一个类型写一种样式但,多个类型有公共特点,可以抽出来,但不适用抽父类,因为,有结构体、有类,Dog跟Person也没有关系。

2024-05-23 13:35:49 267

原创 Swift知识点(四)

通过汇编打断点,可以看出在Swift中调用OC的方法,还是使用的runtime那一套在OC中调用Swift的方法函数,由于已经是继承NSObject,因此,还是走的runtime那一套。

2024-05-17 18:15:12 964

原创 Swift知识点(三)

可以自定义新的运算符:在全局作用域使用operator进行声明比如:prefix operator 前缀运算符就是定义了一个自定义运算符+++,实现前缀运算。

2024-05-16 08:35:08 613

原创 iOS原生与H5交互方法

在使用UIWebViewUIWebView已经被苹果弃用,推荐使用WKWebView),可以使用方法来执行JavaScript代码。

2024-04-19 11:12:04 720

原创 关联对象介绍

定义一个中间对象由于不直接支持weak关联,你可以通过创建一个中间对象来持有实际的弱引用。这个中间对象将有一个weak属性,用于指向你想要弱引用的对象。@end@end在分类中使用关联对象在分类中,使用和来分别设置和获取这个中间对象,从而间接实现了一个弱引用的属性。

2024-04-03 12:32:26 1017

原创 Delegate介绍

首先定义一个协议,声明需要多个对象响应的方法。@optional@end首先,定义一个事件协议,该协议包含委托者将调用的方法。@end@end@end@end@optional@end这个协议声明了一个方法,任何想要监听事件的代理都应该实现这个方法。

2024-04-02 19:04:39 926

原创 SDWebImage源码解析---疑难问题解答

SDWebImage的简单流程图:网上有大佬做了这个图,供参考:源码看了一遍,写的很好,具体源码分析就不写了,后面会列出一些写的源码不错的文章。

2024-04-01 20:40:14 795 1

原创 Mach-O、Universal Binary、虚拟内存等简介

Mach-O:Mach Object,是Mac\iOS上用于存储程序、库的属于Mach-O格式的文件类型有:11种0x10x20x30x40x50x60x70x80x90xa0xb。

2024-03-31 11:19:15 763

原创 NSString有哪些创建对象的方法?创建的对象分别存储在什么区域?

这种情况通常发生在几种特殊对象上,这些对象由于各种原因,被系统视为“永久存活”的,直到应用程序结束。在现在的版本中,为了保证数据安全,苹果对 Tagged Pointer 做了数据混淆,开发者通过打印指针无法判断它是不是一个Tagged Pointer,更无法读取Tagged Pointer的存储数据。所以在分析Tagged Pointer之前,我们需要先关闭Tagged Pointer的数据混淆,以方便我们调试程序。并不表示实际的引用计数值,而是一个标志,表明这个对象是由系统以特殊方式管理的。

2024-03-27 20:24:26 526

原创 Swift知识点(二)

通过汇编打断点,可以看出在Swift中调用OC的方法,还是使用的runtime那一套在OC中调用Swift的方法函数,由于已经是继承NSObject,因此,还是走的runtime那一套。

2024-03-22 15:01:31 1094

原创 iOS常见崩溃简介

多指在移动设备(如iOS、Android设备)中或不可移动设备(如:Windows、Linux等设备),在打开或使用应用程序时出现的突然退出中断的情况(类似于Windows的应用程序崩溃)。多表现为:应用程序画面一闪而过,随即退回到桌面。崩溃会影响用户体验,造成用户流失,因此,我们要重视崩溃根据不同场景,崩溃收集方式不同。

2024-03-17 13:18:33 1362

原创 iOS图片占内存大小与什么有关?

图片所占内存大小,与图片的宽高有关我们平时看到的png、jpg、webp这些图片格式,其实都是图片压缩格式。通过对应的算法来优化了大小以节省网络传输与本地保存所需的资源。但是当我们加载图片到内存中将要显示出来的时候是不能使用压缩格式,这样就不能显示图片了。计算机依赖每一个像素点中的数据来显示图片。例如iOS中的UIImange的每个像素点是由red+green+blue 三原色在加上alpha透明度组成的。三原色每一个的范围在0 ~ 255所以需要来存储一个值的大小。

2024-03-15 19:21:18 909 1

原创 查找数组元素相同的最后一组数组的第一个下标

需求:查找y数组,找出与x数组相同项(相同项可能有多组),找最后一组,并返回最后一组的第一个元素的下标。

2024-03-05 12:51:15 256

原创 Flutter学习笔记(二)---Dart语言学习

这节我们学习下Dart语言的主要语句需要说明的是,文章只做主要的摘录具体参考:Dart 编程语言概览可以在线运行Dart语句的编译器DartPad在 Dart 中一切都是对象,数字类型 也不例外主函数main(){ print("你好啊");}定义一个变量可以使用:明确声明和隐私声明main(){ //明确变量类型 String name = "你好"; //隐私声明 var name2 = "nihao222"; print("$name, $name2")

2024-03-02 12:40:04 473 1

原创 iOS卡顿原因与优化

卡顿: 指用户在使用过程中出现了一段时间的阻塞,使得用户在这一段时间内无法进行操作,屏幕上的内容也没有任何的变化。卡顿作为App的重要性能指标,不仅影响着用户体验,更关系到用户留存、DAU等重要产品数据。因此,需要关注APP的卡顿首先,屏幕上看到的所有内容都是计算机绘制出来的图像帧率:Frames Per Second(fps),表示每秒渲染帧数,通常用于衡量画面的流畅度,每秒帧数越多,则表示画面越流畅。通常,60fps比较流畅,也就是60张/秒,每张图片需要的渲染时间大约是:1s/60张 = 1000

2024-03-01 10:26:41 1664 1

原创 剑指 Offer 40.最小的k个数

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

2024-01-19 11:41:56 369

原创 关于OC中变量相关知识点

众所周知,变量是用来存储数据的围绕着变量,有很多知识点,总结归纳一下。

2024-01-18 17:30:03 1024

原创 剑指 Offer 39.数组中出现次数超过一半的数字

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:nums = [3,2,3]输出:3示例 2:输入:nums = [2,2,1,1,1,2,2]输出:2提示:进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

2024-01-17 11:55:03 562

原创 剑指 Offer 38.字符串的排列

输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串:abc、acbbac、bcacab、cba。

2024-01-15 14:33:39 383

原创 剑指 Offer 37. 序列化二叉树

序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示: 输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。

2024-01-14 14:02:43 392

原创 剑指 Offer 36. 二叉搜索树与双向链表

将一个 二叉搜索树 就地转化为一个 已排序的双向循环链表。对于双向循环列表,你可以将左右孩子指针作为双向循环链表的前驱和后继指针,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。特别地,我们希望可以 就地 完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中最小元素的指针。示例 1:输入:root = [4,2,5,1,3]输出:[1,2,3,4,5]解释:下图显示了转化后的二叉搜索树,实线表示后继关系,虚线表示前驱关系。

2024-01-14 10:41:50 382

原创 数据结构与算法---在一个数组中找出相同个数最多的数

面试中被问到的:在一个数组中找出相同个数最多的数,[1, 1, 1, 2, 2, 3]返回1。

2024-01-13 16:21:44 496

原创 《C语言学习》---郝斌版---笔记

变量的本质就是内存中一段存储空间数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。1字节(Byte) = 8位(bit)1bit就是二进制的0和1计算机能够处理的最小单元是 字节 而不是位位,是由软件通过位运算符操作的1个英文字母(不分大小写)占一个字节的空间D十进制 B二进制 O八进制 H十六进制。

2024-01-12 11:35:30 856

原创 安卓开发学习---kotlin版---笔记(三)

安卓主页的网络框架:OkHttp在OkHttp的基础上进行封装的:Retrofit框架,更常使用。

2023-12-19 19:55:08 638

原创 安卓开发学习---kotlin版---笔记(二)

使用:recyclerView) {//找到recyclerView//管理者,负责列表的布局//创建一个adapter,负责数据的适配//找到item//个数return 20//负责列表的复用。

2023-12-17 19:29:40 412

原创 安卓开发学习---kotlin版---笔记(一)

上次学习安卓,学了Java开发,简单的搭了几个安卓界面。这次要学习Kotlin语言,然后开发安卓,趁着还年轻,学点新东西,坚持~

2023-11-28 20:11:07 548

原创 《微信小程序从入门到精通》---笔记1

hr >:一条分割线对于 HTML,您无法通过在 HTML 代码中添加额外的空格或换行来改变输出的效果。当显示页面时,浏览器会移除源代码中多余的空格和空行。所有连续的空格或空行都会被算作一个空格相当于,不管屏幕多大,都分为750分,按照UI给的图,直接写就行,不需要适配屏幕了。貌似比较高级。

2023-11-24 21:30:27 682

原创 JAVA笔记(五)---再学习

嵌套类(Nested Class)什么是嵌套类?定义在另一个类中的类,被称为嵌套类 public class OuterClass { //静态嵌套类 static class StaticNestedClass { } //非静态嵌套类(也称为:内部类) class InnerClass { } }在嵌套类外层的类,称为:外部类(Outer Class)最外层的外部类,称为:顶级类(Top-level Class)内部类(Inner Class)内

2023-04-14 09:31:05 682

原创 web学习---Vue---笔记(1)

H5的组件,是把某一个模块封装,里面写HTML\CSS\JS等,算是一个页面里面的某个模块。在firstName.slice(0, 3)里面,仅仅是截取前三位的需求,如果里面还有各种sao操作,那。使用v-bind,会将url字符串,看成表达式执行,替换为data里面的key为url的value值。只传一个参数,并且该参数是一个对象类型(对象类型,使用{}),该对象被称为。vm身上所有的属性,及Vue原型上所有属性,在Vue模板中都可以直接使用。拿现有的属性,去加工、计算,生成一个全新的属性。

2023-04-04 14:39:45 436 1

原创 web学习---Vue---笔记(二)

通过props向子组件传递数据通过事件向父组件发送下消息-- 值绑定 -- > <!-- < cpn v - bind : cmovies = "movies" > < / cpn > -- > < cpn : cmovies = "movies" > < / cpn > < / div > < template id = "cpn" > < div > < h2 > 我是标题 < / h2 > < p > 我是内容,呵呵呵 < / p > {

2023-04-04 14:39:31 399

原创 web学习---Vue---笔记(一)

Vue是一个渐进式的框架渐进式的好处:可以将Vue作为应用的一部分嵌入其中框架:是一套完整的解决方案;对项目的侵入性比较大,如果项目需要更换框架,则需要重新架构整个项目库:提供某一个小功能,对项目的侵入性比较小,如果某个库不满足某些要求,可以更换其他库实现需求解析创建一个Vue对象在创建Vue的时候,传入了一个option对象option对象里面,可以包含这些对象:el、data类型:string | HTMLElement作用:决定之后Vue实例会管理哪一个DOMel的作用范围:只要在被命

2022-07-05 10:35:40 410

原创 web学习---JavaScript---笔记(三)

BOM(Browser Object Model),浏览器对象模型。它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是windowBOM比DOM更大window对象是浏览器的顶级对象,它具有双重角色:原来,JS需要写在元素后面,因为代码是从上而下执行的现在,有了window可以将JS写在元素前面使用:,其实窗口(页面)加载事件,当文档内容完全加载完成会触发该事件,调用的处理函数此时,script标签可以写在任意地方,即使是head标签也可以注意:传统注册事件方式只能写一次,如果有多个,会以最后

2022-07-04 17:32:36 168

原创 web学习---JavaScript---笔记(二)

Web APIWeb API是浏览器提供的一套操作浏览器功能(BOM) 和 页面元素(DOM) 的APIDOMDOM:Document Object Model,文档对象模型是处理可扩展标记语言的标准编程接口DOM树获取页面元素如何获取页面元素?通过ID获取通过标签名获取H5新增方法获取特殊元素获取1. 通过ID获取getElementById()方法,获取带有ID的元素对象举个🌰: <body> <div id='time'>2022<

2022-06-26 16:42:53 398

原创 web学习---JavaScript---笔记(一)

JavaScriptJS是脚本语言,一行一行的转换成二进制执行的JS的组成:ECMAScript、DOM、BOMJS引入的三种方式直接引用:<input type="button" value="提交" onclick="alert('秋香')">文件内引用:<script type="text/javascript"> alert('你好');</script>外部文件引入:<script src="js/my.js"&gt

2022-06-23 10:13:46 231 1

原创 《Web前端开发精品课 HTML与CSS进阶教程》---笔记

学习HTML的重点不在于掌握了多少标签,而是在于掌握标签的语义,在你需要的地方能否用到正确的语义标签。在实际开发中,上图下文字的样式,一般使用figure和figcaption两个元素来增强图片的语义化。figure元素 用于包含 图片和图注文字figcaption元素 用于表示图注文字label标签,用于显示在输入控件旁边的说明性文字。也就是将某个表单元素和某段说明文字关联起来标签,仅用于段落中的换行,也就是只适用于p标签内部换行在实际开发中,大多数情况下都是使用无序列表,极少情况下会使用有序列表一张

2022-06-21 09:42:05 129

原创 《Web前端开发精品课JavaScript基础教程》---笔记

外部引用JS的时候,可以在head中引入,也可以在body里面引用同样,内部引用也可以在head或body里面引用JS每一条语句,都以;结尾var变量const常量基本数据类型:数字、字符串、布尔值、未定义值、空值引用类型:数组、对象已经使用var声明了,但是没有进行赋值,此时就是undefined常见的运算符有5种:一般有三种流程控制方式:在JS中,常用的内置对象有四种:String、Array、Date、Math获取字符串的长度将大写字符串转换为小写字符串将小写字符串转换为大写字符串获取第i

2022-06-13 11:49:07 259

原创 《Web前端开发精品课 HTML与CSS基础教程》---笔记

标签 又叫做 元素p标签,段落标签paragraph,可以用来标记一段文字段落标签会自动换行:break 换行标签上标标签sup,superscripted:a2下标标签sub,subscripted:H2O斜体:斜体删除线:删除线下划线:下划线div标签:division(分区):换行分割线:标签分为两种:一般标签 自闭合标签一般标签有开始符号和结束符号,内部可插入其他标签或文字自闭合标签没有结束符号HTML元素根据表现形式,可以分为两类:块元素本身,占据整行块元素内部,可以容纳其他块

2022-06-09 16:45:39 228

原创 web学习---H5与CSS3、动画---笔记

HTML5添加了很多新的标签比如video标签,可以播放视频其中,有些属性:例如:<video src="video/RPReplay_Final1643010740.MP4" autoplay="autoplay" muted="muted"></video>HTML5新加的input类型:

2022-06-07 19:44:49 318

空空如也

空空如也

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

TA关注的人

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