<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yes16ws的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yes16ws</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yes16ws]]></copyright><item><title><![CDATA[《我用AI，一个月做出学了吗APP》]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/161219101</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/161219101</guid><author>yes16ws</author><pubDate>Tue, 19 May 2026 11:34:17 +0800</pubDate><description><![CDATA[《开发者用AI一个月打造学习监督App「学了吗」》 一位开发者利用AI技术在一个月内完成了学习监督App「学了吗」的开发。该App旨在解决现代人学习专注力不足的问题，通过简洁的计时、记录和激励机制帮助用户建立学习习惯。开发者分享了产品定位、功能设计到上架的全过程，重点讲述了如何借助AI提升开发效率：AI帮助梳理产品结构、数据库设计、代码编写和运营文案，使个人开发者能够快速完成原本需要团队协作的工作。文章揭示了AI时代个人开发者的新机遇——AI不是方向盘而是放大器，关键在于开发者能否提出正确问题并有效整合AI]]></description><category></category></item><item><title><![CDATA[iOS原生嵌入Flutter]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/131433024</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/131433024</guid><author>yes16ws</author><pubDate>Wed, 28 Jun 2023 11:23:36 +0800</pubDate><description><![CDATA[我们先创建NativeDemo ios工程然后，导入cocopad通过配置框架。]]></description><category></category></item><item><title><![CDATA[Flutter生命周期]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/131432931</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/131432931</guid><author>yes16ws</author><pubDate>Wed, 28 Jun 2023 11:17:22 +0800</pubDate><description><![CDATA[说白了就是回调函数让你知道我封装好的这个了。]]></description><category></category></item><item><title><![CDATA[iOS之KVC和KVO底层探索]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/128844636</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/128844636</guid><author>yes16ws</author><pubDate>Thu, 02 Feb 2023 09:56:38 +0800</pubDate><description><![CDATA[NSObject运行打印：根据KVC 1.步骤，按照顺序查找。由于我们重写了set方法，所以没有给_name赋值。所以打印(null).查看打印：根据KVC 2.步骤理论，会优先给_< key >赋值。所以只打印了 _name = NY根据KVC 3.步骤理论运行，查看打印： 发现控制打印报错。没有找到对应的key值。KVC取值步骤：(1-0)在实例中搜索找到的名称为get< key >，< key >,按此顺序是< key >或_< key >的第一个访问器方法。]]></description><category></category></item><item><title><![CDATA[iOS编译过程之LLVM]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/126286917</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/126286917</guid><author>yes16ws</author><pubDate>Thu, 11 Aug 2022 15:50:47 +0800</pubDate><description><![CDATA[传统编译器:1.编译器前端(Frontend):它解析源代码，进行词法分析，语法分析，语义分析，检查源码是否错误，然后构建抽象语法树（Abstract Syntax Tree，AST），LLVM的前端还会生成中间代码2.优化器(Optimizer):优化器负责进行各种优化。改善代码的运行时间，列如消除冗余计算等。3.后端（Backend）/代码生成器（CodeGenerator）:将代码映射到目标指令集。生成机器语言，并且进行机器相关的代码优化。...]]></description><category></category></item><item><title><![CDATA[iOS框架-之入门篇]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/126043404</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/126043404</guid><author>yes16ws</author><pubDate>Thu, 28 Jul 2022 20:38:38 +0800</pubDate><description><![CDATA[在日常开发中，经常讨论什么样的框架能。感觉什么都知道，但做起来又好像什么都不知道。各种大佬又有各种的流派，框架这种东西还是得自己理解并且贯通。就如同武功秘籍，必须打通"任通二脉"才能突破到更高一层一样。各位程序猿，也是以这个目标进行自我修行提高。(PS：本文只针对自己的理解加以记录)顾名思义，MVC包括三个模块：（模型层）、（视图层）、（控制层）。与用户的交互顺序是：用户通过视图层发送请求（例如查询账户信息request），视图层的请求发送到控制层，控制层进行中转后，通过模型层与数据库交互查询。模型层的查询]]></description><category></category></item><item><title><![CDATA[block底层探索]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/126043214</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/126043214</guid><author>yes16ws</author><pubDate>Thu, 28 Jul 2022 20:36:16 +0800</pubDate><description><![CDATA[1.block的本质block的本质是⼀个类型的结构体。copy和dispose函数是⽤来对block内部的对象进⾏内存管理的，block拷⻉到堆上会调⽤copy函数，在block从堆上释放的时候会调⽤dispose函数。2.block的底层原理⽤__block修饰的变量在编译过后会变成__Block_byref__XXX类型的结构体，在结构体内部有⼀个__forwarding的结构体指针，指向结构体本身。__block修饰对象的__forwarding指针指向堆上的拷⻉之后的对象。...]]></description><category></category></item><item><title><![CDATA[iOS界面卡顿原理及优化]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/125774066</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/125774066</guid><author>yes16ws</author><pubDate>Wed, 13 Jul 2022 22:27:01 +0800</pubDate><description><![CDATA[在日常开发中，我们最多遇到的就是UI绘制，内容展示等需求的开发，APP的UI展示是否流畅，也是用户最直接的感受。今天就针对UI界面卡顿原理进行分析，如何优化进行讨论。]]></description><category></category></item><item><title><![CDATA[iOS-线程锁]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/125301421</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/125301421</guid><author>yes16ws</author><pubDate>Wed, 15 Jun 2022 17:40:24 +0800</pubDate><description><![CDATA[在程序开发过程中，经常使用到线程，多线程操作数据时。难免发生一些不可控的情况，造成数据不安全。这个时候我们就用了锁，常用的锁有哪些？有os_unfair_lock、NSLock、NSCondition、NSRecursiveLock等。...]]></description><category></category></item><item><title><![CDATA[iOS类的底层探索（下）]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/125301248</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/125301248</guid><author>yes16ws</author><pubDate>Wed, 15 Jun 2022 17:29:52 +0800</pubDate><description><![CDATA[前面我们已经学习了对象相关内容， 如元类，根元类，以及superclass的结构与关系等；初步分析了类的结构superclass,cache,class_data_bits_t,class_data_bits_t结构体中提供了data()方法，用于获取class_rw_t，class_rw_t是在类初始化过程中已经被创建了，并且class_rw_t的相关数据来自MachO文件中ro数据！简单总结：对象是类的实例，类是元类的实例，方法都存储在各自的类中。...]]></description><category></category></item><item><title><![CDATA[iOS类的底层探索（上）]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/124877379</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/124877379</guid><author>yes16ws</author><pubDate>Fri, 20 May 2022 10:08:45 +0800</pubDate><description><![CDATA[前面我们已经学习了对象相关内容，如alloc的流程，对象的内存分配，以及对象ISA的初始化等；明确了OC层NSObject，与c\c++层中objc_object的对等关系；Class的定义为objc_class *类型。接下来，深入探索类的结构。

一. isa指针分析

在对象的初始化过程中，学习了对象isa的初始化，并且isa中的shiftcls指向了对象所对应的类。

通过以下案例我们可以再次验证这一点，即对象内存结构的前八个字节是对象的isa，并且指向了p对象的类LGPeron。见下图：



.]]></description><category></category></item><item><title><![CDATA[ios对象的底层探索(下)]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/124876936</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/124876936</guid><author>yes16ws</author><pubDate>Fri, 20 May 2022 09:41:21 +0800</pubDate><description><![CDATA[我们在上一篇文章中已经初步了解了，alloc是如何分配内存等，结构体按最内存对齐,oc类是16字节对齐等内容。


	影响对象内存的因素
	
对象⾥⾯存储了⼀个isa指针 + 成员变量的值，isa指针是固定的，占8个字节，所以影响对象内存的只有成员变量（属性会⾃动⽣成带下划线的成员变量）









我们验证看到，对象P并未赋值。但是p的内存占用了48字节（8+8+4+8+2+1=31 按8对齐40+isa8）。


	对象的内存分布
	
在对象的内部是以8字节进⾏对⻬的。 苹果会⾃动重成员变量的顺序]]></description><category></category></item><item><title><![CDATA[ios对象的底层探索(上)]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/124223976</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/124223976</guid><author>yes16ws</author><pubDate>Sun, 17 Apr 2022 01:14:53 +0800</pubDate><description><![CDATA[常用指令
	

1. po:   为 print object 的缩写，显示对象的文本描述
2. bt:   打印函数的堆栈  
3. register read    读取寄存器
4. x/nuf 
    n表示要显示的内存单元的个数
    u表示一个地址单元的长度：
    取值范围： 
            b 单字节  
            h 表示双字节
            w 表示四字节
            g 表示八字节
    f表示显示方式：
    取值范围：
  ..]]></description><category></category></item><item><title><![CDATA[计算机学习笔录]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/123816718</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/123816718</guid><author>yes16ws</author><pubDate>Tue, 29 Mar 2022 14:28:09 +0800</pubDate><description><![CDATA[1.二进制算法：

35 = 100011 （2）

具体步骤：35 / 2 =17======= 余1

17 / 2 = 8======= 余1

08 / 2 = 4======= 余0

04 / 2 = 1======= 余0

02 / 2 = 1======= 余0

...]]></description><category></category></item><item><title><![CDATA[Hook初探索]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/122670012</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/122670012</guid><author>yes16ws</author><pubDate>Mon, 24 Jan 2022 17:44:29 +0800</pubDate><description><![CDATA[分析MachO获取函数地址

⾸先我们要⽤到⼀款软件。MachOView



利⽤它来分析我们Demo的主程序。接下来如何定位到我们的sum函数地址呢？ 


通过LLDB调试获取Sum函数的⽂件偏移地址。

1.⾸先在sum函数上下⼀个断点 

2.然后通过汇编显示确定函数地址，在Xcode⾃带的Debug设置中设置⼀下搞定 

Debug --&gt; Debug Workflow --&gt; Always Show Disassembly（⼀直显示汇编）

3.接下来通过LLDB指令找出主程序的.]]></description><category></category></item><item><title><![CDATA[Mach-0符号表]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/122585594</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/122585594</guid><author>yes16ws</author><pubDate>Thu, 20 Jan 2022 16:27:25 +0800</pubDate><description><![CDATA[ABI Mach-O

Mach-O(Mach Object) 是MacOS、iOS，iPadOS存储程序和库的文件格式。对应系统通过应用二进制接口（application binary interface，缩写ABI）来运行改格式的文件。



Mach-O格式用来替代BSD系统的a.out格式。Mach-O文件格式保存了在编译过程和链接过程中产生机器代码和数据。从而为静态链接和动态链接的代码提供了单一文件格式。



段之前始终是4096字节或者4KB的倍数，其中4096字节是最小大小。

现在短是16]]></description><category></category></item><item><title><![CDATA[寄存器常见指令]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/122582194</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/122582194</guid><author>yes16ws</author><pubDate>Wed, 19 Jan 2022 17:12:18 +0800</pubDate><description><![CDATA[mov：  将某一寄存器的值复制到另一寄存器（只能用于寄存器与寄存器或者寄存器 

与常量之间传值，不能用于内存地址），如：



mov x1, x0 将寄存器 x0 的值复制到寄存器 x1 中

add： 将某一寄存器的值和另一寄存器的值 相加 并将结果保存在另一寄存器中， 

如：





sub： 将某一寄存器的值和另一寄存器的值 相减 并将结果保存在另一寄存器中：



and： 将某一寄存器的值和另一寄存器的值 按位与 并将结果保存到另一寄存器中， 

如：

orr： 将某一寄存器的值和另一]]></description><category></category></item><item><title><![CDATA[记录podspec创建私有pod库流程，ios组件化管理。]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/113991205</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/113991205</guid><author>yes16ws</author><pubDate>Tue, 23 Feb 2021 16:52:55 +0800</pubDate><description><![CDATA[最初是想整个组件化管理的案例，借鉴了一些文章：作者：SnaiLi地址：https://www.jianshu.com/p/ea09fa02e871 和作者：上海_光强 地址：https://www.jianshu.com/p/59c2d2c4b737 (不能白漂别人的成果)

1、创建一个git仓库用来做内部私有库的Spec Repo，命名为Pods(自己喜欢怎么命名都可以)，如下图：





image.png

pods.git 用来管理控制 自己的组件.podspec 版本的

注意：一定...]]></description><category></category></item><item><title><![CDATA[[iOS] iOS开发的22个奇葩技巧]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/50218617</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/50218617</guid><author>yes16ws</author><pubDate>Tue, 08 Dec 2015 14:43:21 +0800</pubDate><description><![CDATA[转自：http://bbs.itcast.cn/thread-51807-1-1.html
导读：TableView不显示没内容的Cell怎么办？键盘事件写得好烦躁，都想摔键盘了怎么办？App老不流畅哪出问题了？CoreData语法又臭又长怎么办？拉伸图片怎么才能不变形？让我们一起欢乐地学习一下iOS开发的各种小技巧吧。

1. TableView不显示没内容的Cell怎么办？

类似于]]></description><category></category></item><item><title><![CDATA[iOS的横屏(Landscape)与竖屏(Portrait)InterfaceOrientation]]></title><link>https://blog.youkuaiyun.com/yes16ws/article/details/42678201</link><guid>https://blog.youkuaiyun.com/yes16ws/article/details/42678201</guid><author>yes16ws</author><pubDate>Tue, 13 Jan 2015 16:21:34 +0800</pubDate><description><![CDATA[最近做一个页面，最初并没有太多考虑orientation的情况，当其嵌入到一个在iPad上使用横屏(Landscape)的应用中，就会只显示在屏幕的左面，而且貌似还没显示全，这个……很丑！发自内心地觉得这么做对不起苹果的设计理念！对不起乔老爷子。。。
改！说到该就要了解苹果开发中对iOS应用的横屏(Landscape)和竖屏(Portrait)的支持情况。
0. 应用级别的配置
大家（特指有]]></description><category></category></item></channel></rss>