自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 分类与扩展

1)category的方法的添加,并不是"完全替换"(只是插到了它的前面),也就是说如果category和原来类都有methodA,那么category附加完成之后,类的方法列表里会有两个methodA。2)category的方法被放到了新方法列表的前面,而原来类的方法被放到了新方法列表的后面,这也就是我们平常所说的category的方法会“覆盖”掉原来类的同名方法,这是因为运行时在查找方法的时候是顺着方法列表的顺序查找的,它只要一找到对应名字的方法,就会停止,但是后面可能还有一样名字的方法。

2025-06-07 17:16:13 936

原创 KVC与KVO

KVO全称Key-Value-Observing,作用是对象监听另一个对象特定的属性的改变,并在改变时接收到事件,举例如下:如果person对象的name属性改变了,就会调用监听者BaseController的observeValueForKeyPath方法。

2025-06-07 16:43:48 851

原创 CADisplayLink、NSTimer、GCD定时器

IOS的常用的定时器有NSTimer、CADisplayLink、GCD定时器。其中NSTimer、CADisplayLink有以下特点:依赖RunLoop,某些方法创建时需要手动把定时器添加到RunLoop中如果是通过target:selector方式创建的,需要注意定时器会对target产生强引用。由于依赖RunLoop,如果某个RunLoop循环中有大量的耗时操作,则定时器的回掉可能不会准确的在定时间隔内触发。GCD定时器由以下特点:依赖于操作系统内核的,定时精度相对高。

2025-06-07 16:31:04 934

原创 IOS性能优化

CPU(Central Processing Unit中央处理器):对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制(Core Graphics)GPU(Fraphics Processing Unit图形处理器)纹理的渲染。在IOS中是双缓冲机制,有前帧缓存、后帧缓存。屏幕成像原理卡顿产生的原因。

2025-06-07 16:24:16 955

原创 IOS的“main“究竟在哪

其中libSystem_initializer调用了libdispatch_init方法,libSystem_initializer被修饰__attribute__((constructor)),在dyld的libSystem库被加载的时候(this->libSystemLoader->runInitializers(*this);打开dyld源码,虽然控制台是从start开始打印的,但是dyld4跟dyld3一样都是从__dyld_start。运行程序,根据终端打印结果,可发现程序。

2025-04-28 15:06:50 561

原创 项目组件化

git commit -m "代码初始化"修改主项目的Profile。

2024-08-11 15:53:03 426

原创 IOS逆向-1、签名原理

IOS签名机制的作用保证安装到用户手机上的APP都是经过Apple官方允许的不管是真机调试,还是发布APP,开发者都需要经过一系列复杂的步骤生成CertificateSigningRequest.certSigningRequest文件获得ios_development.cer\ios_distribution.cer证书文件注册device、添加App ID获得*.mobileprovision文件对于真机调试,现在XCode已经自动帮开发者做了以上操作。

2024-07-23 21:51:50 478

原创 3 - LLVM环境配置

下载只需要关注其中两个文件clang和llvm分别是clang的源码和llvm的源码NinjaXcode官方推荐使用Ninja编译,因为其速度最快,笔者也亲试,整个过程只需20分钟左右即可完成。但作为一名iOS开发,还是习惯使用Xcode编译,毕竟界面看起来亲切,而且可在之后我们编写插件的或者IR Pass的时候也能或得良好的代码提示,缺点就是慢一点。笔者使用Xcode编译花了40分钟左右,这根据个人电脑配置而定,配置稍微差一点,一个小时多也是正常的。

2024-07-07 17:10:56 1114

原创 2 - LLVM 前端Frontend

词法分析生成Token : clang -fmodules -E -Xclang -dump-tokens main.m 语法分析,生成语法树(AST, Abstract Syntax Tree):clang -fmodules -fsyntax-only - Xclang -ast-dump main.m 在语法树上的基础上进行检查。 官方语法文档https://llvm.org/docs/LangRef.html

2024-07-07 15:01:22 297

原创 1 - LLVM简介

相比较之下,GCC的前端和后端没分得太开,前端后端耦合在了一起,所以GCC为了支持一门新的语言,或者为了支持一个新的目标平台,旧变得特别困难。

2024-07-05 19:53:01 934

原创 4-autoreleasepool原理

在IOS程序中main.m文件,是整个IOS应用的入口,@autoreleasepool{}这个block包裹了整个应用,对象创建时自动执行autorelease将对象加入到autoreleasepool,进而管理整个IOS应用的内存回收,不用在创建对象的最后再手动release。那么下面从源码的角度来分析autoreleasepool究竟是怎样工作的。

2024-03-26 22:20:04 1844

原创 3-weak原理

weak是一种防止循环引用,也能在对象回收时自动置为nil的引用,下面从源码角度来分析weak的实现原理。slock 自旋锁,用于上锁/解锁 SideTable。refcnts 参考第三节weak_table 存储对象弱引用指针的hash表。

2024-03-26 22:03:08 1346

原创 2-内存管理

retainCount是由isa中extra_rc和Sidetable一起组成对象的retainCount归零时,还要再减一的时候,会调用dealloc方法回收对象extra_rc = 0是代表retainCount为1。

2024-03-26 21:44:21 639

原创 1-IOS内存结构

本文先从源码角度分析了runtime中的object,以及内存结构。然后从RetainCount方面介绍了如何进行管理内存,以及用autoreleasepool自动管理内存的原理,又分析了weak在内存管理的作用和原理。

2024-03-26 21:27:10 1277

用于IOS, 性能优化检测工具

用于IOS, 性能优化检测工具

2025-06-07

项目组件化项目组件化项目组件化项目组件化项目组件化

项目组件化项目组件化项目组件化项目组件化项目组件化

2024-08-11

js雪花效果

JS原文件,只需要加载到界面就可以实现飘雪的效果....................................................

2018-03-06

空空如也

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

TA关注的人

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