自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鹏仔的技术博客

编码——业务——人生

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

原创 家长控制和设备管理

首先,处于保护用户隐私的考虑,苹果将一些数据绑定到了指定控件上,比如我们选择了一个应用(Application),直接获取他的图标、名字、ID之类的都是空的,需要把他传入到指定的UI控件中,控件里面有获取相关信息的能力,并展示。这些展示应用信息、读取应用列表的控件都是基于swift UI来的,我们要熟悉swift UI。API也偏新一些,好多都是iOS16、iOS17以上才支持的,所以建议最低支持到iOS17下面先介绍主要类库及其功能。

2025-02-28 18:02:48 410

原创 iOS事件传递和响应

事件传递过程:从application传递到最上层view,如下图事件传递过程事件响应处理过程:从最上层view开始向下传递,与事件传递方向相反事件响应过程。

2025-02-16 21:39:15 1642

原创 事件传递和监控

通过方法交换(Method Swizzling),我们能够在运行时修改系统类的方法实现,实现监控 iOS 系统的点击事件。通过替换方法,我们可以捕捉到所有控件的点击事件,并在其中加入自定义的处理逻辑。虽然方法交换非常强大,但在实际应用中需要小心使用,以避免对性能和系统行为产生不必要的影响。

2025-02-16 17:27:35 933

原创 autorelease pool

系统会自动在以下情况下创建每个方法调用时:系统会自动为方法调用创建,在方法结束时释放临时对象。RunLoop中:在主线程的RunLoop迭代中,系统会自动创建和销毁,管理临时对象。异步任务中(如 GCD、NSTimer):系统会为每个异步任务创建,确保任务中创建的临时对象能被及时释放。回调函数中:如动画回调、网络请求回调等,系统会为每个回调创建。显式使用:在长时间任务中,可以手动创建,以便更精细地控制内存释放。在大多数情况下,系统会自动为你管理。

2025-02-16 17:08:51 808

原创 NSCoding 与归档解档

是一个协议,用于支持对象的序列化和反序列化,也就是“归档”和“解档”操作。归档的过程将对象保存为数据,可以存储到磁盘、数据库或者传输到网络,而解档是将这些数据恢复为原始的对象。

2025-02-15 22:56:54 358

原创 关于DispatchTime和DispatchWallTime

DispatchWallTime会计算出一个具体的时间点,只有系统时钟到了那个点才会执行。比如程序执行后,我把系统时间给改了,那他实际执行时间也会变化

2025-02-15 21:15:47 208

原创 weak的实现原理

其实好多技术我们用的都很多,但是如果展开其中的细节原理,不一定能说的清楚。今天就说一下我们常用的属性修饰词weak例子在这个例子中,person1和person2之间互相引用。如果我们使用strong修饰符,它们会互相持有对方的强引用,从而形成循环引用,导致它们无法释放。但是,当我们将person1赋值给weakPerson后,weakPerson不增加person1的引用计数,因此当person1被置为nil时,weakPerson也会自动被置为nil。这背后的机制涉及结构和这两个函数的作用。

2025-02-14 22:59:32 302

原创 UIView 与 CALayer 的联系和区别

主要用于控制视图的视觉效果,包括阴影、圆角、边框、渐变、3D 变换等。,它提供了更高级的接口,使开发者能够方便地管理 UI 组件,而。让视图添加边框,太常用,也没啥注意的,不举例子了。会裁剪子视图,但同时也会影响阴影效果,导致。(如渐变、动画、3D 变换等),可以直接操作。今天说一下UIView 与 CALayer。会裁剪阴影,导致阴影不可见。的核心图层(Layer)。是用户界面的基础,它负责处理。提供了更强大的低级绘制能力。实例,负责管理其外观。实现缩放+透明度变化。在 iOS 开发中,

2025-02-14 22:32:03 1220

原创 RunLoop 详解

很多时候我们需要执行耗时操作(比如网络请求),但不能让主线程被阻塞,否则界面无法响应。能够持续监听输入事件(如用户触摸、定时器、网络请求等)并分发给相应的处理方法,从而保持应用程序持续运行。当我们在后台线程执行定时任务时,必须确保线程运行不被中断。(UI线程)必须保持活跃,才能响应用户的操作和刷新界面。,即便你创建了一个线程,也不能有效地等待和处理外部事件。,否则后台线程执行完毕后会自动退出,定时器就会停止。的实现,负责管理线程的执行和调度。,即使任务没完成,它也会直接退出。,使其持续运行,处理事件。

2025-02-13 22:13:02 1113

原创 NSLock 详解

适用于有时间敏感性的任务,防止线程长时间等待锁。,它的性能更好,并且提供了更灵活的锁管理方法。是 Objective-C 提供的一种。实现的,但多了一些管理开销,因此。避免多个线程交叉锁(死锁)

2025-02-13 21:45:26 471

原创 @synchronized的使用

是 Objective-C 提供的一种(Mutex),它用于确保一段代码在,避免。lockObjectlockObjectnil如果多个线程同时修改同一个对象,可能会出现数据竞争问题。多个线程可能同时访问。

2025-02-12 23:54:47 335

原创 关于atomic 是否是线程安全的问题

在 Objective - C 里,atomicatomic。

2025-02-12 23:36:55 773

原创 iOS主要知识点梳理回顾-5-运行时方法交换

方法交换可以放在+load或方法中,也可以自己根据时机来空,比如开启某个开关后才需要交换方法。如果是在会在类加载时(程序启动)自动调用;如果是在。

2025-02-11 14:39:42 457

原创 iOS主要知识点梳理回顾-4-运行时类和实例的操作

iOS 运行时(Objective-C Runtime)提供了丰富的 API 来对类进行动态操作,包括创建类、修改类的结构、添加方法、替换方法等。这对于实现动态特性、AOP(面向切面编程)、方法拦截等功能非常重要。以下举例创建一个新的类,并指定其父类及额外的内存空间。注册类以使其能够使用。

2025-02-11 14:38:17 1041

原创 iOS主要知识点梳理回顾-3-运行时消息机制

运行时是OC的重要特性,也是OC动态性的根本支撑。动态,如果利用好了,扩展性就很强。当然了,OC的动态性只能算是一个一般水平。与swift、java这种强类型校验的语言相比,OC动态性很强,和js这种纯动态的语言(随时给类增加函数、属性)相比,OC的动态性就弱很多。动态,可以帮助我们在运行时修改类的属性、函数、甚至创建一个新类相关知识点。

2025-02-09 16:40:43 1186

原创 iOS主要知识点梳理回顾-2-多线程

很多技术不常用,你可能看过很多遍也都大致了解,但是实际让你讲,不一定讲的清楚,需要输出才可以理解的更透,拿到实际中反复用是最好的。如果不能用,那怎么更好的理解和学习?推荐通过AI对话,不断的提问,然后对他的回答进行反复的验证校准。

2025-02-08 21:04:56 1032

原创 OC-Block

1、早期的程序设计中,如果仅仅是局部作用的block,大概率是存在栈内存中的,用完就被释放掉了。然后如果被传递给了某个类来引用,需要开发者自己通过设置属性为“copy”类型来实现复制到堆内存中,以便启用引用计数来管理其生命周期,所以大家都用copy来修饰block属性。2、现阶段苹果做了优化。直接根据block是否引用变量,以及所引用的变量的生命周期来控制block的存储位置,和我们给的属性修饰(copy、strong)没关系。考虑版本兼容问题,推荐继续使用copy修饰

2025-02-08 17:50:28 829

原创 关于swift- OC混编使用Pod遇到的2个错误

Cannot find interface declaration for '系统类', superclass of "自定义"Library not found for -lAFNetworking Linker command failed with exit code 1 (use -v to see invocation)

2024-07-29 18:50:59 669

原创 iOS多环境管理,支持快速编译

在iOS中快速的进行环境切换这篇文章都说了什么?在iOS中快速的进行环境切换效果:切换效果项目场景:我们日常开发至少有两套环境(开发+正式),好一点的就是三四套(开发、测试、预发、正式),这就必不可少的有一个需求,就是如何在各个环境之间快速的切换,甚至热切换。出于安全考虑,一般正式环境和其他环境不能互相切换。我曾经看到一个外卖app的个人中某处连续点击若干次后,会出现一个环境切换页面,能切换和配...

2022-03-22 17:12:01 2801

原创 swift-oc混编分享3-UrlRouter跳转中心

一行代码实现iOS页面跳转viewControllerA.openViewController(path: "order/detail", query: ["orderId": 123])viewControllerA.openUrl("myScheme://myHost.com/order/detail?orderId=123")

2022-03-18 15:29:03 3553

原创 swift-oc混编分享2-tableView优化

在iOS中,如何优化tableView,提升效率(高度计算、事件回调),降低代码量源码分享(swift+OC),快速在你的项目中搭建

2022-03-10 19:22:03 4226

原创 swift-oc混编分享1-提示组件

iOS快速度搭建toast、loading提示信息,不用依赖复杂的三方,swift实现,OC可调用

2022-03-07 14:14:55 1974

原创 swift-oc混编分享

swift和OC混编的思路,混编过程碰到了哪些问题,系列组件分享

2022-03-05 17:12:31 1686

原创 sign in with Apple,使用Apple授权登录

sign in with Apple

2022-03-03 15:17:41 2144 1

原创 iOS Universal Links 配置 - 收集了配置无效的问题

创建【apple-app-site-association】文件 >> 上传文件到自己的服务器>> app内配置 >> 打包安装到手机(真机) >> 使用Safari验证结果

2020-03-27 14:38:46 8044 7

原创 iOS App托管和分发搭建

iOS的内侧包管理,内部分发,或者企业包的分发和Android略有不同,需要通过manifest文件以及Safari内置命令来触发安装。

2020-03-19 12:58:48 2612

原创 技术招聘见解

首先插个tips:各位大牛,我们正在招聘,可以了解下~最近开始慢慢的参与公司的人才招聘,总结一点东西,分享给大家1、面试官角度,面试的整个过程是啥样的明确目的!明确目的!这个很重要,一定要知道自己想要什么样的人,形成初步目标画像(听话干活、技术攻坚,独当一面、有担当,可带队、等~) 拿到简历,做面试准备 核对信息的真实度(一般都有点水分),通过项目的匹配度,公司的背景,个人职责,大...

2019-02-27 17:09:50 485

原创 iOS图片的加载优化 initWithContentsOfFile

有的小伙伴可能没那么在意图片的加载方式,习惯了imageNamed,看到initWithContentsOfFile时也没有仔细看他的作用。1、首先我做了一个实验,比较了两种方式对内存的影响。测试方法,对于app的引导页(5张图)分别使用imageName和initWithContentsOfFile去初始化图片使用imageName加载图片[UIImage imageNamed:...

2019-01-31 13:55:04 2012

原创 开发之路

难得静下心来,写点东西,望共勉。读大学的时候,我就很爱开发,那时候刚接触C不久,就自己配了电脑,没事敲几行不成形的代码,感觉还挺来劲。后来又看隔壁专业的同学在修Java,翻翻书,感觉Java好像比C看着舒服呢,又去学了Java。再后来我又买了Android从入门到精通,安装了编译器,那会的Windows电脑是各种报错,尝试好几天,终于安装成功了。可是贪玩的心依旧重于对这些语言的好奇心,最终电脑...

2018-11-26 16:24:21 265

原创 移动验证:本机校验和一键登录(中移动、中联通、中电信提供)

更新时间:2019/07/23先推荐直接从三大运营商那里直接做这个功能,相对麻烦。所以我们想到了三方代理代理1:阿里云 - 号码验证,每次4分,已经支持一键登录,SDK大约在20M左右,UI是半自定义的,但是基本可以满足需求。阿里的SDK经过一年多的打磨,已经比原来好用多了,之前一次号码验证是三次交互,掉了两次服务接口,现在优化掉了一次,相对快了一些。后台管理还有一些数据统计,每月的量,...

2018-11-13 11:26:44 35181 17

原创 WKWebView cookie 容错

最近iOS项目中,需要在app端设置cookie,然后web取cookie验证用户身份,但是cookie中的一些字段无论如何也去不到,二app设置断点后却真实的看到了我“正确的”设置了cookie。因为问题还发生在一些特定的手机上,所以我们开始比较这些手机之间的区别。大家都知道,cookie的格式大致如下document.cookie = 'key1=value1';document.c...

2018-10-29 15:13:51 268

原创 iOS Cordova项目无法收到推送

最近接触Cordova,项目中集成了网易云信,其中的推送功能需要设置证书名称,为了方便测试,同时不频繁的改动原生代码,我写了这样的代码:- (void)setupAPS { #if DEBUG // ifdef 也用过 //设置证书名:develop #else //设置证书名:release #endif }然...

2018-10-25 11:01:02 408

原创 iOS刘海屏适配,导航栏高度,工具栏高度,滚动范围

当前iPhone有两种主要屏幕有2种类型:刘海屏、方屏(SE、Plus、7、8)配新iPhone,且SE一直在更新,那么两种屏幕样式一段时间内会共存,所以每个页面都应该考虑做好适配

2018-09-13 10:53:06 31974 1

原创 iOS KVO实现原理及使用

关于KVO的实现,文章已经很多了,这里阐述我个人的观点,写一些自己的感受1、简介    KVO(key-value observe)是在KVC的基础上实现的一种用于监听属性变化的设计模式;如果对某个类的某个属性设置了KVO,那么当这个属性发生变化时,就会触发监听方法,从而知道属性变化了2、使用1)设置监听// 初始化一个测试类_kvoTest = [[KVOTestModel alloc] in...

2018-06-01 19:35:40 5693 1

原创 tableView for TTXS

github 地址:https://github.com/pengGitHubUp/GPTableViewKit 一:控制器代码 @interface DayMyTrainLibListVC ()<GPTableViewManagerDelegate>//声明代理/** 表格 */@property (nonatomic, strong) UITableView...

2018-04-28 14:06:27 183

原创 关于Xcode9拖拽文件无法识别

这两天升级到了Xcode9, iOS客户度新开发了一些功能,感觉左侧的文件列表不是很完美,于是就重新分类。把一些文件夹删掉,然后从新分类、组合,最后拖进项目; 结果每次编译都报错,提示文件缺失;删掉,再拖进来还是一样,根本不起作用;最后通过在左侧列表》右键》Add Files To "XXX" ... 的方式添加,终于可以顺利编译了。

2017-09-29 08:47:57 1323

原创 iOS 合并真机和模拟器的.framework

开始之前我们定义一个名字,假定你创建的是一个叫做“yyyy.framework”的静态库抓住重点:我们合并的是framework内的一个和framework同名的一个小文件(没有后缀,图片中已标记);然后把生成的新yyyy文件覆盖到真机framework内;重新真机编译即可,那么编译后的真机目录下的framework文件就是合并后的我们需要的库了知道了原理,就会写合并代码了

2017-09-12 16:05:35 708

原创 iOS 获取国家列表、转json

NSLocale *locale = [NSLocalecurrentLocale];        NSArray *countryArray = [NSLocaleISOCountryCodes];    NSMutableDictionary *objectDic = [[NSMutableDictionaryalloc] init];    for (NSStr

2017-08-25 17:45:17 1363

原创 iOS rtf 和 ttf 字体导入技巧(iOS应用自定义字体)

iOS设置自定义字体,倒入ttf慧者rtf字体文件

2016-10-31 00:45:10 3132

转载 【Linux】linux常用基本命令

Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题。1、显示日期的指令: date2、显示日历的指令:cal3、简单好用的计算器:

2016-04-12 08:55:30 328

空空如也

空空如也

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

TA关注的人

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