- 博客(114)
- 资源 (2)
- 收藏
- 关注
原创 【跟着AI学】系列-【Objective-C底层原理】-【第八章 分类 (Category) 与扩展 (Extension)】
Objective-C Category 与关联对象实现原理摘要 Category 允许为现有类动态添加方法,但不能直接添加实例变量。其本质是编译时将方法、属性、协议信息存入 Mach-O 文件的 __objc_catlist 段,运行时通过 _read_images 将方法列表插入主类方法列表最前端,实现方法覆盖(后加载的 Category 方法优先)。 关联对象机制突破 Category 限制,通过 objc_setAssociatedObject 等函数在全局哈希表中以键值对形式存储额外数据。底层采用
2025-07-29 11:43:00
1032
原创 【AIGC】-【中篇科幻小说】-寂静的边界 (The Silent Frontier)-By Gemini-2.5-Pro
这篇小说是由AI生成的,使用Gemini-2.5-Pro,消耗了大约600万Token。目标:创作达到雨果奖水平的中篇科幻小说工作流程:首先由角色-小说构思者设计大纲然后由角色-科幻小说家编写小说的一章内容最后由角色-科幻小说评论家对结果进行评估。如果通过,继续创作下一章;如果不通过,提供修改意见,由科幻小说家按大纲和修改意见重新编写,进入新一轮循环。生成后,整体逻辑未做调整,修改了几个名字的错别字,以及一处关系错乱(父亲的弟子->老师)大家可以看一下,评价下整体水平怎么样。
2025-07-26 12:27:57
472
原创 【跟着AI学】系列-【Objective-C底层原理】-【第七章 键值编码 (KVC) 与键值观察 (KVO)】
KVC(Key-Value Coding)是Objective-C的动态访问机制,通过字符串在运行时访问对象属性。其核心方法包括valueForKey:和setValue:forKey:等,遵循严格的查找规则:先查找getter/setter方法,再访问实例变量,最后调用未定义键处理方法。KVC支持keyPath访问嵌套对象,广泛应用于动态取值/设值、字典与模型转换、KVO实现及集合运算(如@sum/@avg)。在内存管理方面,KVC会智能遵守属性声明时的内存语义(strong/copy/weak等),无论
2025-07-25 14:14:08
686
原创 【跟着AI学】系列-【Objective-C底层原理】-【第六章 属性 (Property) 与实例变量 (Ivar)】
本文深入解析了 Objective-C 中 @property 的本质与实现原理。关键点包括: @property 是编译器指令,会自动生成实例变量(_name)、getter 和 setter 方法 原子性特性:atomic(默认)会加锁保证线程安全,nonatomic 性能更高但非线程安全 相关指令:@synthesize 关联属性和实例变量,@dynamic 声明运行时动态实现 atomic 仅保证单个操作的原子性,不能确保业务逻辑的线程安全 理解这些底层原理是掌握 Objective-C 内存管理和
2025-07-25 11:18:33
702
原创 【跟着AI学】系列-【Objective-C底层原理】-【第五章 类的加载与初始化】
Objective-C 类初始化方法对比 本文对比分析了Objective-C中两个特殊的类初始化方法+load和+initialize。 +load方法在App启动时自动执行,具有以下特点: 在main函数执行前被调用 调用顺序遵循父类->子类->分类 直接通过函数指针调用 主要用于方法交换(Method Swizzling) 会影响启动速度,需谨慎使用 +initialize方法则采用懒加载方式: 在类首次被使用时调用 遵循标准的消息发送机制 父类方法可能被子类多次调用 适合用于类级别的初始
2025-07-25 10:16:06
707
原创 【跟着AI学】系列-【Objective-C底层原理】-【第四章 内存管理与 ARC】
本文深入解析了Objective-C中的内存管理机制,重点介绍了手动引用计数(MRC)和自动引用计数(ARC)的工作原理。在MRC模式下,开发者需要手动调用retain、release等方法管理对象生命周期;而ARC则在编译时自动插入这些内存管理代码。文章详细讲解了四种引用计数操作方法(alloc/retain/release/dealloc)和autorelease的延迟释放机制,并阐释了ARC中的所有权修饰符(__strong默认强引用和__weak弱引用)的作用。理解这些原理对于诊断内存问题和掌握Ob
2025-07-24 16:58:38
1251
原创 【跟着AI学】系列-【Objective-C底层原理】-【第三章 消息传递机制 (Message Passing)】
Objective-C消息发送与转发机制详解 Objective-C的方法调用本质是消息发送,通过objc_msgSend函数实现动态派发。其核心流程分为: 消息发送阶段: 通过对象isa指针找到类结构 优先查找方法缓存cache_t(哈希表) 缓存未命中则遍历类的方法列表method_list_t 沿继承链向上查找直至根类 消息转发阶段(未找到方法时): 动态方法解析:通过resolveInstanceMethod:动态添加方法实现 备用接收者:通过forwardingTargetForSelector:
2025-07-24 16:06:36
870
原创 【跟着AI学】系列-【Objective-C底层原理】-【第二章 类与对象的核心本质】
本文深入解析了Objective-C中类与对象的底层实现机制。首先揭示了对象的本质是一个包含isa指针的结构体,该指针指向所属类,并详细介绍了从纯指针到高效位域(non-pointer isa)的进化过程。接着阐述了类本身也是对象的概念,指出类对象包含方法列表、属性列表等元信息。最关键的是引入了元类(Meta-Class)的概念,说明元类作为类的类,负责存储类方法并形成完整的继承体系。通过分析对象内存布局和类结构,展现了Objective-C运行时如何通过isa指针将实例、类和元类串联成有机整体,为理解消息
2025-07-24 15:26:26
1162
原创 【跟着AI学】系列-【Objective-C底层原理】-【第一章 基础概念与运行时入门】
Objective-C 是 C 语言的超集,完全兼容 C 并扩展了面向对象特性。其核心在于 Runtime 运行时机制,它通过消息传递(objc_msgSend)实现动态特性,将 OC 代码转换为 C 函数调用。Runtime 作为动态语言的基础,支持消息传递、动态类型和内省等特性,允许运行时修改类结构和方法实现。编译器(如 Clang)负责前期静态转换,将 OC 代码编译为中间表示;运行时则动态处理消息发送、类型检查等。二者协作实现了 Objective-C 的灵活性,是 Method Swizzling
2025-07-24 15:03:34
1110
原创 Mac设置快捷键实现屏幕旋转
最近在看视频的过程中,发现部分竖屏视频是横过来的,需要旋转才能正常展示。但有些应用的内置视频播放器又不支持视频旋转,导致这些视频基本没法观看。通过系统设置中的显示器设置,改变显示器的旋转,可以满足这个需求,但在浏览的过程中,一会儿改成横屏,一会儿改成竖屏,手动操作太麻烦了,因此想看看可不可以设置快捷键来快速进行切换。搜索了一下,发现相关内容还是比较少的,而且时间也比较久了,脚本基本不可用了。因此只能自己搞定了。
2024-10-29 23:18:12
6035
2
原创 用Swift搭建API Server,Vapor + PostgreSQL + Docker + ECS + OSS
阅读前: 您应该具备Swift、Vapor、Docker、服务器、存储服务器等相关概念的基本知识。 本文不涉及全面的知识点,只针对开发、部署中的常见问题和注意事项进行说明。 一、Vapor1.项目文件结构如下...
2021-05-26 15:33:27
1086
1
原创 iOS Swift 绘制PDF,超长字符串分页绘制
最近自己做个小项目,需要把数据绘制成PDF打印出来。在研究PDF绘制的过程中,发现国内在这方面很难搜到优质有深度的内容,尤其是超长字符串分页绘制,基本没找到解决方案(我使用的原生方法绘制,所以不考虑使用HTML的情况)。无奈去google,在stackover上找到一篇帖子,根据它的思路,终于实现了基础功能。使用PDFKit,绘制部分基本都是CoreGraphics,多行文字分页绘制使用了CoreText。具体代码如下:这是数据模型,主要记录每天早中晚饭,几点,吃的什么。/// 组数据
2021-04-02 11:46:35
916
原创 Button 随 ScrollView 滚动 划入划出
// ScrollView Delegate 中// MARK: - 发送按钮滑动动画 /// 滑动时隐藏按钮,需判断滑动范围,和是否拖动。否则下拉刷新、push进其他页后再回到本页会导致按钮隐藏,而停止方法未调用,按钮隐藏后没有自动出现的bug。 func scrollViewDidScroll(_ scrollView: UIScrollView) { if scrollView.contentOffset.y > 0 { i.
2021-04-02 11:24:57
286
原创 NSMutableAttributeString中,由于表情导致string count 计算不准确问题
正确用法:attrStr.addAttribute(.foregroundColor, value:JFColors.title, range:NSRange(location:0, length: replyModel.content.utf16.count))NSMutableAttributeString,在添加attribute时,Range计算使用str.count,当string中有表情时,count计算不准确,导致异常。解决办法:使用string.utf16.count计算s...
2021-04-02 11:22:42
335
原创 EdgeInsetLabel 支持文字缩进的Label
开发时,经常出现Label需要文字缩进的情况。比如一个label需要圆角,文字居中,带颜色的背景,左右两边需要留出距离,这样出来的效果才好看。如下图EdgeInsetLabel,可以轻松实现文字缩进的效果。并且支持在storyboard和xib中直接配置,直接显示出最终效果。//// EdgeInsetLabel.swift//// Created by pilgrim on 2017/4/27.//import UIKit/// - 版本/// - V1.0.0
2021-03-04 14:09:45
364
1
原创 iOS 类似聊天页面 tableView在出现时自动滚动到底部(不闪动,无痕)
iOS在开发类似聊天的页面时,需要进入页面,直接展示最新的数据。而最新数据在最底部,因此需要一进入页面,tableView直接展示在最底部位置。滚动代码:self.tableView.scrollToRow(at: IndexPath(row: tempModels.count - 1, section: 0), at: .bottom, animated: false)只能在viewDidAppear中调用,在viewDidLoad中或viewWillAppear中调用,不起作用。而在viewDidA
2021-01-28 16:05:25
2027
原创 自己整理的iOS面试题
由于之前在公司负责技术面试,因此整理了一份面试题。现在自己也要找工作了,正好看看复习一下相关知识。1.Block循环引用问题,OC怎么解决?Swift怎么解决?UIView animation为什么没有循环引用?Block有几种类型?(GlobalBlock StackBlock MallocBlock)__weak和__block区别?(__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。__weak只能在ARC模式下使用,也只能修饰对...
2020-10-27 11:55:14
431
原创 iOS 优秀博客集合(持续更新,欢迎推荐)
这里是一些自己收集的比较好的技术博客,工作不忙或者闲暇时间可以看看,提升技术储备。闲鱼技术 Flutter相关:https://juejin.im/user/5ac2db47f265da2393774122/posts唐巧的博客:http://blog.devtang.com/archives/王巍的博客:https://onevcat.com/#blog滴滴出行 戴铭的博客...
2019-03-28 14:20:41
833
转载 Linking Objective-C Code
转载自:https://pewpewthespells.com//blog/objc_linker_flags.htmlRecently a conversation on came up on twitter as to the significance of the-ObjClinker flag and why this is important for us to us...
2019-03-28 14:17:52
429
转载 关于Swift中的指针的那些事
前言在Objective-c的世界中,一切对象都是指针。它是一种运行时语言,具体指针的对象类型将会在运行时,由系统分配。这样虽然自由,但是却并不安全。Swift世界就不一样了,Swift的世界很安全(至少大部分时候情况如此)。我们不必为对象运行时的类型担忧,这是Swift为我们构筑的一层堡垒。但是在一些时候,这层堡垒也成为束缚我们行为的操作。正文Swift也为操作指针这种不安全行为...
2019-03-28 14:13:35
269
转载 版本号管理:Semantic Versioning
转载自:https://semver.org/lang/zh-CN/语义化版本 2.0.0摘要版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的...
2019-03-28 14:03:01
569
原创 iOS 检查接口参数是否和文档一致,防止疏忽导致书写错误的一些思考
在iOS开发过程中,我们在编码Server接口的时候,不可避免的要硬编码一些接口名、参数key等文档中定义的内容。而怎么防止由于人的原因,编码意识模糊一时大意导致这些硬编码出错的问题?暂时想到了两种方式,一种静态,一种动态。1.静态处理的方式,需要开发人员在编码过程中,在接口代码编写时需遵循某种指定的格式,或添加某些指定的注释或标记。然后通过shell脚本,在Xcode的run scrip...
2019-03-28 14:00:27
543
原创 从MVC到MVVM,团队过渡方案:MVVM+Delegate实现
此实现方式为并不完全的MVVM,绑定耦合性较高。架构更偏向于MVP。只是因为团队对于MVVM和RxSwift or RAC不熟悉,RxSwift or RAC学习成本较高,此实现方式为中间过渡状态。通过delegate形式实现反向绑定,容易理解,在本次项目中,让团队成员有更无痛的方式体验MVVM并逐步掌握此架构分层思想。待熟练掌握MVVM结构后,后续项目逐步使用RxSwift开发。 ...
2018-08-20 14:50:35
478
原创 Swift中的 RSA Sign
项目中,使用了Https+RSA Sign的认证方式实现方式为使用了Github开源库SecrecySwift,但此项目有一段时间没有人维护,按照readme中的集成方式,在新的Xcode9.4 or Swift4中不能在真机中正常运行。修复方式如下:Xcode 9.3, Swift 4项目, 引入此项目,按readme中的直接部署源码的方式已无法正常运行。解决办法:1.删除C...
2018-08-20 14:45:15
1524
原创 约瑟夫问题 算法 数据结构 循环单链表
// MARK: - 约瑟夫问题// 链表节点class Node: NSObject { var next: Node? var value: Int?}// 人的编号var i = 1// 头节点let headNode = Node()headNode.value = 1// 总人数let m = 12// 创建循环单链表func genera...
2018-08-20 14:34:36
357
原创 Jenkins报错unknown error -1=ffffffffffffffff
The following build commands failed:PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/Shared/Jenkins/Library/Developer/Xcode/DerivedData/HiCashLoan-djgcxytxmkppgudzvpihaseqoxea/Build/Interme...
2018-08-20 14:32:24
1671
转载 关于反调试&反反调试那些事
前言在逆向和保护的过程中,总会涉及到反调试和反反调试的问题,这篇文章主要是总结一下几种常见的反调试手段以及反反调试的方法。反调试ptrace为了方便应用软件的开发和调试,从Unix的早期版本开始就提供了一种对运行中的进程进行跟踪和控制的手段,那就是系统调用ptrace()。通过ptrace可以对另一个进程实现调试跟踪,同时ptrace还提供了一个非常有用的参数那就是PT_D
2017-11-29 14:15:54
2163
原创 逆向工具(待研究)
HookZz:https://github.com/jmpews/HookZzAppleTrace:https://github.com/everettjf/AppleTraceMachOExplorer:https://github.com/everettjf/MachOExplorerMachOView:https://github.com/gdbinit/MachOViewM
2017-11-29 14:14:54
432
转载 越狱检测/越狱检测绕过—xCon
http://www.freebuf.com/articles/wireless/6318.html一直忽略了越狱检测与越狱检测绕过的问题,因为我认为在app争抢装机率的环境下,是不会在乎对方的设备越狱与否的。但很显然,我忽略了一个问题,app在设计的时候或许会依照设备是否越狱而采取不同的流程,比如说对越狱的设备采取更多的安全措施,在这种场景下,越狱检测是否可靠就成为了关键问题。本篇文
2017-11-29 14:13:48
5025
转载 利用 HookZz 实现反调试与绕过的奇淫技巧
地址:https://bbs.pediy.com/thread-220795.htm任何带特征的检测都是不安全的 & 隐而不发(Ouroboros)Move to AntiDebugBypass on github代码依赖于 HookZz, 一个 hook 框架## 前言对于应用安全甲方一般会在这三个方面做防御.按逻辑分类的话应该应该分为这几类, 但如果从实
2017-11-29 14:13:06
3565
原创 更新Xcode9后,tweak make失败
把/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/System/Library/Frameworks/ 里面相应的库的头文件,更新到/opt/theos/include或者/opt/iOSOpenDev/include上述方
2017-11-29 14:12:26
408
原创 美团逆向-干掉反动态调试
http://www.jianshu.com/p/28fc728f762chttp://blog.youkuaiyun.com/zhangmiaoping23/article/details/34501837http://bbs.iosre.com/t/7-2-0-ios/770http://bbs.iosre.com/t/sub-xxxxx-hook/1294
2017-11-29 14:11:15
2638
原创 Swift单元测试XCTest
创建项目的时候可以勾选UnitTest选项,系统会自动生成Test Target,没有勾选的也可以自行创建Test Target1、对于OC混编的项目,Test工程会报找不到头文件错误。需要在Test Target的build setting中配置bridging-header。2、对于CocoaPods引入的第三方库,也会报找不到,可以在Podfile中增加KuaiTests部分
2017-09-12 16:57:52
1385
原创 UIImage+GIF.swift SDWebImage中处理GIF的分类的swift版实现
//// UIImage+GIF.swift// swiftPractise//// Created by 云君 on 2017/6/5.// Copyright © 2017年 pilgrim. All rights reserved.//import Foundationimport UIKitimpo
2017-09-12 16:56:37
809
转载 几个常用的Swift Extension:防止按钮重复点击、增加友盟页面统计、Dispatch_once Swift实现
// 防止按钮重复点击// UIButton+extension.swift//// Created by pilgrim on 2017/2/23.// Copyright © 2017年 pilgrim. All rights reserved.//import UIKit// 默认间隔时间file
2017-02-23 12:07:30
2041
转载 极客学院:iOS安全攻防
转载自:http://wiki.jikexueyuan.com/project/ios-security-defense/
2017-02-23 12:02:19
752
转载 iOS逆向:破解 APP防止dyld注入 的方法
转载自:http://bbs.iosre.com/t/tweak-app-app-tweak/438
2017-02-23 11:59:23
6094
转载 iOS安全:防止dyld注入
转载地址:https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.htmlBlocking Code Injection on iOS and OS XYesterday I posted (twitter) a set of linker flags that can be set th
2017-02-23 11:56:44
811
原创 常用类:BaseTabBarController
自定义的TabBarController,增加控制器、修改图标、背景颜色、选中颜色等等//// BaseTabBarController.swift//importUIKitclassBaseTabBarController:UITabBarController { override func viewDidLoad(
2016-12-07 17:47:17
839
转载 用 Swift 实现轻量的属性监听系统
注:会不会有内存问题。block调用一个页面的UI内容,并被另一个页面保存住。需要注意弱引用,有待测试。本文的主要目的是解决客户端开发中对“模型的一处修改,UI 要多处更新”的问题。当然,我们要知晓解决方案的细节和思考过程,以及看到其能达到的效果。我们会用到函数式编程的思想,以及伟大的“泛型”。请相信我,我们并非为了使用新技术而使用新技术。如果一个问题有更好的方法去解决,那为何不替换掉
2016-12-07 17:44:01
428
Data Structures and Algorithms in Swift.pdf
2021-05-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅