iOS And More~
文章平均质量分 79
分享iOS开发相关技术,包括但不限于:前沿技术学习总结、基础知识底层深究、日常开发坑点总结复盘~
追到梦的魔术师
移动端工程师,曾就职滴滴、京东~
展开
-
iOS调试技巧——使用Python 自定义LLDB
只需要将命令command script import /Users/xx/Desktop/lldbtest.py 写入这个文件即可。至此,直接在Xcode中使用lldb打印出[MyClass lldbTest]的返回值就完成了。lldb_test表示命令名称,lldbtest是Python文件名,test是自定义方法名。/Users/xx/Desktop/lldbtest.py是Python文件路径。在使用Python 自定义LLDB之前,先了解一下LLDB的一些类型。####1、新建Python文件。原创 2023-10-25 11:32:22 · 903 阅读 · 0 评论 -
LLDB 三种输出方式 对比及原理探索
LLDB是英文Low Lever Debug的缩写,是XCode内置的为我们开发者提供的调试工具,它与LLVM编译器一起,存在于主窗口底部的控制台中,能够带给我们更丰富的流程控制和数据检测的调试功能。如果有访问变量的子属性,例如v variable.field1.field2,则会不断的重复读内存和类型推断的行为,最后再走到(之前在p说过的)格式化。当我们的项目过大时,就会使我们项目的编译耗时过长,如何在项目运行时进项代码调试,熟练使用LLDB就可以解决这个难题,大幅度提高我们的开发效率。原创 2023-10-20 16:44:43 · 811 阅读 · 0 评论 -
iOS UIWebView与WKWebView 那些事
UIWebView是iOS 2中推出的网页容器,UIWebView是最占内存的控件;直到iOS 8以后,苹果推出了WebKit框架,其中WKWebView正式被推出来接替UIWebView的位置;iOS 12中,苹果正式弃用UIWebView,要求开发者用 WKWebView 全面替换 UIWebView,apple 官方文档。原创 2023-10-20 16:42:18 · 1148 阅读 · 0 评论 -
借助“响应链”解决实际问题
自定义按钮继承自UIButton,重写pointInside来扩大控件的响应区域。这样即使点击区域不在按钮上面,但是距离按钮边缘没有超过10像素,按钮仍然会认为当前碰触的屏幕坐标是在按钮控件当中,因此按钮可以成为此次操作的响应者来响应点击事件,这样就可以实现增大热区的效果。原创 2023-10-18 11:08:00 · 88 阅读 · 0 评论 -
iOS 项目避坑:多个分类中方法重复实现检测
首先定义白名单,我定义了四种类型的白名单,分别是(文件白名单、class白名单、方法白名单、文件夹白名单),白名单中的成员不在检测范围之内# 文件名白名单,格式:xxx.m# class 白名单,格式:xxx# 方法名白名单,格式:(+/-)xxx(:xxx:xxx:)# 文件夹白名单,格式:xxx。原创 2023-10-12 10:44:25 · 579 阅读 · 0 评论 -
iOS 定位服务的权限与规则——WWDC2019学习总结
一、Core LocationCore Location是iOS系统级别定位服务框架,iOS所有定位服务相关功能都与它相关工作原理简介:遍历过所有APP之后一段时间,系统会将event自动清除二、权限升级弹框策略我们都知道,在需要获取用户位置时,会先弹出提示框获得权限,再根据 API 去获取所在位置。但在 iOS 13 中,提示框内容与以往不同。会发现,iOS13时,即使App开始...原创 2020-05-07 17:38:11 · 1415 阅读 · 0 评论 -
iOS开发小技巧——增加图片按钮的响应区域
在iOS的日常开发中,经常会碰到这样的需求:图片很小,但是需要它点击的“热区”很大。方案一 控件叠加直接将一个透明的button覆盖在imageView上,来扩大图片的点击热区,这种方法简单粗暴,但是很不优雅~方案二 设置imageEdgeInsets正常情况,我们为了让图片显示大小按照规定显示,就将按钮的大小设置成和图片一样,此时图片的热区就是图片的大小 UIButton *...原创 2020-04-12 13:07:57 · 838 阅读 · 0 评论 -
iOS响应链那些事
一、响应链相关的两个核心函数-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event该函数判断当前可以响应的此次操作的视图- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event该函数返回当前碰触的屏幕坐标是否在当前视图中二、响应链逻辑实验自定义Butt...原创 2020-04-05 15:58:41 · 303 阅读 · 0 评论 -
ios链接器探索
一、编译器 VS 解释器在谈iOS链接器之前,先理解两个概念编译器:摘自 Wiki Compiler 一段A compiler is a computer program (or a set of programs) thattransforms source code written in a programming language (the sourcelanguage) int...原创 2020-03-21 13:12:57 · 574 阅读 · 1 评论 -
iOS开发效率提升——Xcode编译性能优化操作
一、取消 Find Implicit Dependencies对所编译项目的Scheme进行配置Product > Scheme > Edit Scheme > Build亲测结果:有效!!原因:在这个选项(Find Implicit Dependencies)被选中的情况下,即使你只是对项目进行了很细微的改变,项目中的所有资源文件都会被重新编译一遍。也会对所有被改变的...原创 2020-03-13 19:16:08 · 1901 阅读 · 0 评论 -
iOS开发冷知识——原来UILabel的成本超出你的想象
之前看一位苹果工程师的博客,里面有提到UILabel显示文案的时候会有很大的内存消耗,建议当前隐藏或者不使用的UILabel在不影响功能的前提下,将label的文本设置为nil。内存消耗对于一个合格的iOS开发者来说是需要特别注意的点,碰到这种问题时一定要一探究竟,耳听为虚、眼见为实,立即上代码一探究竟。实例化一个屏幕大小的UILabel,不设置任何文案,只单纯设个一个背景色,代码如下:UI...原创 2020-03-05 18:14:09 · 446 阅读 · 0 评论 -
iOS App 启动原理(一)—— mian之前
一款 iOS App 的启动时长对于用户体验来说是至关重要的因素,也是各大公司努力优化的点。最近看了2016年WWDC的一篇视频,怕日后忘记,做一些小总结。启动过程:一、加载dyld到App进程什么是dyld?dyld的全称是dynamic loader,它的作用是加载一个进程所需要的image。这里提到的image并不是我们认知的意思,指的是Executable,Dylib或者Bundl...原创 2020-02-26 23:59:41 · 542 阅读 · 0 评论 -
iOS 调试技巧——LLDB
当我们的项目过大时,就会使我们项目的编译好使过长,如何在项目运行时进项代码调试,熟练使用LLDB就可以解决这个难题,大幅度提高我们的开发效率。1、什么是 LLDB?LLDB是英文Low Lever Debug的缩写,是XCode内置的为我们开发者提供的调试工具,它与LLVM编译器一起,存在于主窗口底部的控制台中,能够带给我们更丰富的流程控制和数据检测的调试功能。2、LLDB的简单使用2.1...原创 2020-01-13 18:12:12 · 2321 阅读 · 1 评论 -
iOS 深入了解 atomic 与 nonatomic
前言:已经多年移动端开发的我宣布Property Attributes一直以来都是用nonatomic,尚未使用到atomic。场景:如今项目中有这样一个场景,在一个自定义类型的Property在一个线程中改变的同时也要同时在另一个线程中使用它,使我不得不将Property定义成atomic,但是由此发现atomic并不会保证线程安全,由此我深入查询了解下atomic 与 nonatomic,...原创 2018-10-09 17:40:07 · 2995 阅读 · 0 评论 -
ios 查看虚拟机中的数据库
1、首先找到虚拟机的存储地址并前往NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString* strDocDir = [paths objectAtIndex:0]; 2、打开.db文件这里推荐使用使用DB.Browse...原创 2018-10-08 20:13:02 · 650 阅读 · 0 评论 -
iOS 常用加密
iOS常用加密操作原创 2016-08-31 14:56:28 · 2126 阅读 · 1 评论 -
iOS生成二维码图片
iOS生成二维码图片原创 2016-09-16 20:11:26 · 1615 阅读 · 0 评论 -
iOS UITableView 取消弹性效果
UITableView *tableView = [[UITableView alloc]init]; tableView.bounces = NO;原创 2016-09-02 16:47:15 · 8130 阅读 · 0 评论 -
iOS开发的前端之路
iOS开发的前端之路原创 2016-09-03 10:25:00 · 3118 阅读 · 0 评论 -
iOS UITableViewCell 的 imageView大小更改
iOS UITableViewCell 的 imageView大小更改原创 2016-09-06 19:48:51 · 5424 阅读 · 0 评论 -
iOS OC与js交互
OC 与 js 交互原创 2016-10-10 14:29:27 · 1090 阅读 · 0 评论 -
ios 获取某年某月总共多少天
ios 获取某年某月总共多少天原创 2017-01-09 17:54:07 · 3232 阅读 · 0 评论 -
iOS架构初探 (一)—— MVC与MVP
iOS架构初探 (一)—— MVC与MVP原创 2017-03-02 12:05:47 · 3352 阅读 · 2 评论 -
浅析 UIApplication 生命周期的一些 delegate 方法
浅析 UIApplication 生命周期的一些 delegate 方法转载 2017-01-31 00:26:39 · 1101 阅读 · 0 评论 -
swift 音乐播放器项目-《lxy的杰伦情歌》开发实战演练
swift 音乐播放器项目-《lxy的杰伦情歌》开发实战演练原创 2017-03-09 11:06:56 · 4182 阅读 · 4 评论 -
ios ——JS 与OC混编
ios7之后,ios中加入了JavaScriptCore框架。该框架让Objective-C和JavaScript代码直接的交互变得更加的简单方便。一、JSContext 与 JSValueJSContext是OC与js交互的中间上下文,用于相互转化。 在iOS框架中,凡是带session或者context后缀的,这种类一般自己不干活,作用一般都是两个:1.管理其他类,帮助他们搭建沟通桥梁,好处就原创 2017-09-25 20:17:04 · 530 阅读 · 0 评论 -
iOS UILabel 文字 置顶/置底 实现
iOS UILabel控件默认文字位置是居中的,如图所示:但是我们经常碰到这样的需求,希望文字向上置顶,或者向下置底,但是很遗憾,iOS API中并没有提供相应的属性和方法,需要我们手动设置。利用 分类(category)为UILabel添加属性 isTop 和 isBottom来控制文字是否置顶和置底。实现:利用往文字后面活前面下面添加”\n”来实现文字填充满整个UILable控件实现置顶/置顶效原创 2017-11-15 15:19:41 · 9775 阅读 · 4 评论 -
iOS网路传输zip压缩
iOS zip压缩、解压操作原创 2016-08-31 15:20:48 · 980 阅读 · 0 评论