自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大熊猫猪侯佩 (︶^︶)

hopy是一只贪吃贪睡爱鹅鹅的大熊猫猪

原创 Apple有史以来屏幕最大的手机iPhone 12最新超详细揭秘
原力计划

0. 楔子 其实Apple是一家实打实的硬件公司,而他们的皇牌就是iPhone。 虽然每年iPhone都要老生常谈的打怪升级,每年都要有几句吸睛地广告语,但这并不影响各位果友们一年又一年"喜新厌旧"的期待心情。 更何况iPhone毕竟也是诸多码农吃饭的老本,不把它摸透何来饭吃呢...

2020-05-27 09:50:12 360 0

原创 最新的iOS14操作系统全面消息重装上阵
原力计划

引言 病毒肆虐的神州早已恢复生机,新冠蹂躏的地球也已逐渐恢复元气! 上面这两个好消息,像春风拂面,捎带着一年一度果粉期待已久的日子,伴随着最新的iOS14系统、也伴随着Apple最新的皇牌手机: iPhone12即将到来。 相信各位对于iOS13正式版刚发布时的惨剧还记忆犹新,那时是各种吐槽,Ap...

2020-05-26 15:16:08 265 0

原创 iOS系统逆向工程之神探侯佩智破量子矩阵
原力计划

在任何一部编程悬疑动作片里,每一个超级英雄都有一个颓废的开始… 本故事纯属虚构 如有雷同洗洗睡吧 警告:未经允许禁止转载!!! 楔子 未知星球。 雨还在下,漆黑的乌云压抑的想吐。 极度的黑暗中,一枚红点忽明忽暗… 一团黑影斜靠着墙壁,使劲的吐着烟圈… 墙壁上到处都留存着纳米激光射线刻着的&...

2020-05-21 10:00:21 133 0

原创 Mac OS增加文件缓存改善写入性能

这篇准备写个直接明了的…保证没有段子… 本文概述了如何使得写入性能提高近5倍的实现。 答案很简单: Cache!!! func cryptFile(path: String, with keyData: Data) { guard let h = FileHandle(forReadin...

2020-05-02 10:06:48 192 0

翻译 深度好文: 为毛我能通过@State var修改变量? @State属性修饰器内部肿么工作的?

问题: 为毛改变(遵守View协议的结构中)常规的成员变量会报错? “Cannot assign to property: ‘self’ is immutable” “Cannot use mutating member on immutable value: ‘self’ is immutab...

2020-04-15 17:16:45 85 0

原创 SwiftUI: @propertyWrapper结合Combine打造可观察属性
原力计划

SwiftUI视图刷新机制杂谈 笼统的说,属性在被改变时想要触发视图refresh,需要满足下面两种条件之一: 该对象是值类型,所有值类型都不能被修改,只能创建修改后的实例。这使得SwiftUI运行时可以捕获到这种新创建的时机,借此刷新视图。 该对象是引用类型,遵守ObservableObjec...

2020-04-15 14:34:05 129 0

原创 SwiftUI中带格式(Formatter)TextField如何捕获非法输入
原力计划

导言 本文将向大家展示如何利用格式的TextField来过滤用户非法输入,同时解决一个TextField的"怪异"行为。 这是本猫第一篇付费博文,相信不会让你失望,如果能够解决到大家的难点、痛点那就更妙了… So废话少说,Let’s Go!!! TextField的格式器有什...

2020-04-08 15:29:19 191 0

原创 快点射!(Swift Injection) 不带这样的!
原力计划

导言 注入(Injection)在任何语言里都是非常有效的解耦利器。 请不要把上面的注入和注入攻击混淆起来,不要把本猫逼得变身成黑客猫 ???? 这里就带大家看看如何解决Swift中Injection一个常见的问题: 怎么解决泛型协议实体兼容性问题??? 快速射(Swift Injection)...

2020-03-28 19:09:50 185 0

原创 浅析Swift中Combine框架自定义订阅操作符
原力计划

引子 Swift 5.1中苹果终于千呼万唤始出来的祭出Combine框架,带着一层神秘的面纱,它来啦! Combine框架颠覆了以往苹果的开发模式,它用发布者(Publishers),订阅者(Subscribers)以及两者之间重要的纽带:订阅(Subscriptions),诠释了什么是反射式编程...

2020-03-26 22:35:43 216 0

原创 最直白告诉你Swift语言的rethrows关键字到底有什么用?
原力计划

说实在的,错误处理对于Swift语言来说还算比较简单,如果你对此早已了然于心,请直接略过。 如果你搞不清throws和rethrows到底有什么区别,你可以留步稍微了解一下。 throws 关键字 throws很简单,就是用来告诉编译器我这个方法会抛出错误: enum MyError:Err...

2020-03-18 09:40:57 203 0

原创 SwiftUI: 利用Combine四种方式实时监听用户文本输入
原力计划

自从Swift 5.1加入了Combine之后,腰不酸了,腿不疼了,各种姿势都能有了… 不过对于TextField来说如何实时监听用户输入的文本呢? 貌似TextField自身并没有带用户输入改变的回调,这可咋整呢? 没关系,聪明的你们应该早已猜到,用Combine库,秒天秒地秒空气… tru...

2020-03-14 09:35:57 360 0

原创 如何写一个显示iOS线程编号的小扩展

我们在测试iOS下多线程并发编程时往往需要区分不同的线程。 我们知道Thread有一个name实例变量可以用来给线程命名,但是那些系统自动创建的线程你就拿它没办法了吧? 其实Thread实例自身是有编号的,不过并没有直接导出。 我们用以下语句可以窥探一下: print("\(Threa...

2020-03-07 15:30:33 102 0

原创 Swift一个小例子带你了解Combine中多重订阅不丢失(auto replay)的方法

引子 Combine中虽然有众多内置Operators,但是要想实现对同一个Publisher多次订阅,且结果不丢失还是比较棘手的,除非实现自定义Publisher,但这不是今天我们的话题 ???? 什么是多重订阅? 多重订阅就是多个订阅者订阅同一个Publisher。 什么是多重订阅不丢失? ...

2020-02-20 09:43:33 263 0

原创 Xcode中Playground运行代码无响应的极简解决方法

大多数童鞋可能对Xcode中的Playground又爱又恨,我完全可以体会你们的感受… Playground遇到比较多的一种情况就是:执行代码挂起! 就是点击那个小三角运行按钮,等到天荒地老却此情可待成追忆的赶脚… 这时你把Xcode彻底的完全的关闭,但仍然没有什么卵用… 难道抓狂的你...

2020-01-26 14:40:14 255 0

原创 猜猜看:极简例子Swift代码并发耗时不按预期的原因

一段老外写的Swift并发代码,在Playground中运行: let sentence = "Ray’s courses are the best!" let wordOperation = BlockOperation() for word in sentence...

2020-01-26 14:14:50 362 0

原创 SwiftUI重构功能视图: Never Repeat Yourself!

1.原来视图的架构:我们需要监听一个通知 父VC弹出一个子View,其中子View需要接收父VC发出的通知: [父VC]--------弹出-------->[View] [View]--------监听-------->[父VC] 由于View的特殊性,我们不能直接将监听回调放在Vi...

2020-01-10 10:12:38 474 0

原创 iOS项目升级到Xcode11后编译运行崩溃的原因及解决

好久没写Blog了,今天来一发 一个iOS项目,今天第一次用Xcode11打开,出现了若干错误,逐一修复后,编译运行,App可耻的崩鸟… 调试发现崩溃出现在如下一行中: 这个在之前的Xcode10中运行是没有问题的,那么可能的原因就是新的Swift运行时在运行检查时更加严格了,在新的Swift...

2019-11-19 14:48:26 1617 4

原创 Swift初学者容易掉入的两个比较隐蔽的陷阱

本篇本猫向大家演示了初学者用Swift语言编码时容易犯的2个错误,希望可以帮助到大家。

2019-06-01 10:05:44 531 0

原创 iOS间接循环引用造成内存泄漏一例

大家对iOS代码中的循环引用导致内存泄漏都很了解,本博试图进一步完善和补充这一主题,谈谈间接循环引用造成泄漏的问题。

2019-05-28 10:32:16 166 0

原创 iOS第三方动画标签库内存泄露点的寻觅之旅

本博叙述了在使用第三库的过程中,从发现其中有泄露到定位到泄露,最后解决内存泄露的全过程。适合有一定经验的iOS开发者观赏。

2019-05-04 11:01:16 278 0

原创 iOS代码动态消除iPhone X底部工具条(ToolBar)与键盘间的夹缝

在App界面底部增加工具条并不少见,在工具条上增加输入框更所谓是"应知应会".下面本猫就向大家介绍如何适配iPhoneX中底部工具条与弹出键盘的相对位置.

2019-04-23 11:10:28 1313 0

原创 亲自入坑:2012年的macbook air安装windows7全过程

首先说明一下:我是不用windows的,更不会在mac上装windows。 我是为别人帮忙安装的,其中一直入坑,好像最后才从里面爬起来,值得记录一下,供后人观赏 注意:请看完全文后再动手操作,装机有风险,行动需谨慎!!! 零: 准备 首先明确只有较晚的mac才支持免U盘安装windows(好像是...

2019-04-18 11:23:53 3977 0

原创 iOS科普一下根View及其子View中心点含义的坑

本文简单介绍了根View以及子View中心的含义。解答了为什么根View的直接子View可以用childView.center = parentView.center来设置中心,但childView的子View不可以这样做的原因。 废话?中心什么意思!? 的确,中心是什么意思,不是废话么?...

2019-03-12 10:38:09 495 3

原创 Swift派生与不派生自NSObject对象之间等于比较的不同

本文简单介绍了Swift中派生与不派生自NSObject的类,在等于比较时表现出的不同行为;还顺带讨论了创建大数组时效率的问题. 等于或不等于 我们知道对于数组的比较来说,实际比较的是它们中的每一个对应位置上元素. 所以最终都是要比较对象的. 我们还知道对于Swift中的类来说,要实现...

2019-02-21 11:06:36 570 2

原创 简约同样简单:为UISlider添加显示当前值的标签(下)

本文在重构的基础上,从类封装的角度重新实现UISlider的功能扩展:显示当前的值,比之前更加简单和易于维护。建议在看完上篇之后再来观赏。 上篇观赏在此 : 简约同样简单:为UISlider添加显示当前值的标签(上) 为什么要重写? 在上篇里我们已经实现了UISlider的扩展功能,...

2019-01-29 14:22:09 499 4

原创 简约同样简单:为UISlider添加显示当前值的标签(上)

本文畅想了几种为UISlider添加显示当前值的方法,并选择了其中一个稳定,简单的实现.适合iOS刚入门或中级水平的童鞋们观赏. 看不见值?这不科学! 默认的UISlider,你可以任意拖动,却看不见当前表示的值… 有点盲人摸象的赶脚了… 我们一般的做法是用另一个控件表示其当前值,...

2019-01-27 13:35:26 1102 0

原创 吐槽一下Xcode中的Playground

本文对playground的优缺点做了一个阐述,并将其与Ruby中的irb做了比较,主要是想借机抒发一下作者想怼Ta的美好心情 出发点 苹果的初衷很好,做一个可以快速实验原型的平台.对一些简单的想法,可以来快速印证. 我不知道你们用不用,反正我用playground还是蛮多的. 除...

2019-01-19 09:30:55 831 0

原创 乱弹:Swift单复共体参数类型---与Ruby相比不那么优雅的实现

本文提出单复共体参数的一种实现,同时比较了Ruby中的实现,后者显然更加优雅。适合对Swift语言本身有兴趣,喜欢纠结语法,而且了解其他动态语言的童鞋观看。 什么是单复共体参数? 这是我发明的词… 很简单,就是对于同一类型的对象,既可以传递它的单数形式又可以传递它的复数形式作为方法的参数。 ...

2019-01-06 12:54:34 345 0

原创 CoreData中访问托管对象的NSSet关系属性导致崩溃的解决

本文介绍了再少数情况下,当访问CoreData托管对象中的NSSet关系属性引起App崩溃的现象以及解决. 现象 在访问托管对象的traces关系属性时,App崩溃,提示: *** Terminating app due to uncaught exception 'NSInvali...

2018-12-31 19:56:35 440 0

原创 化繁为简:Swift剔除数组中重复元素的几种姿势

本文向大家介绍稍许算法的实现:关于如何去除数组中的重复元素,并比较了两种算法之间的效率.全部代码在Xcode的Playground中实现,直观明了,适合Swift学习入门童鞋观赏. 有个前提 如题,很多童鞋立即给出解决方法,无外乎是利用Swift内置的集合(Set)或字典(Dict)的...

2018-12-27 17:23:48 2080 0

原创 iOS使用动画连贯过渡界面转换

本博向大家演示如何通过添加动画,为原有界面元素变换增加连贯的过渡效果.为UI代码一丝动态与活力感. 缘起 第三方的一个图片裁剪器,拿过来做了几点修改: 将其封装到动态库中,方便集成 扩充了一些功能,比如等待菊花和是否允许进行裁剪等 用封装好的动态库创建了一个ImageCropRo...

2018-12-22 13:02:23 28283 4

原创 一招搞定Xcode错误日志显示use -v to see invocation的问题

本博向大家展示了当Xcode出错信息匮乏,完全不知所云时,如何找到真正的错误原因的方法。简单有效,你值得拥有。 抽风的Xcode? 极少数情况下,Xcode编译出错的信息完全让人摸不着头脑,比如下面一段: <unknown>:0: error: merge-modu...

2018-12-20 21:11:13 3201 0

原创 Swift调用协议扩展导致崩溃的解决

本博向大家介绍Swift对象委托的一种变通方法,但遗憾的是该方法在Swift 4.2中会导致App崩溃,生活还要继续,且看本猫如何解决它喽. 什么是对象委托 简单的说对象委托就是对象A假装对象B,当然A和B的类完全不同. 用过Ruby的童鞋都知道,这很容易完成: Class Acc...

2018-12-19 10:36:25 489 0

原创 Swift中集合(Set)无法删除自身对象的临时解决方法

这是本猫遇到的比较怪异的问题之一:明明在集合中的对象,但却无法直接删除它。由于原项目较为复杂,为了演示目的,本猫对博文示例代码做了简化,但并不影响问题的表述。 背景介绍 App逻辑很简单,对象Node对应着TableView中每一行,你不用知道Node对象到底是啥,你只要知道它是列表每...

2018-12-15 16:52:50 348 1

原创 Xcode真机运行App行为怪异且断点无法触发的解决

系统环境 MacOS 10.12.6 4GB MBA,编译环境 Xcode 9.2 Swift 4.1 问题现象 在模拟器上编译运行一切正常,但在真机上编译运行时发现某一个界面显示方法总是返回错误的内容。 关键是在该方法上下断点竟然无法触发,是的,我100%肯定会调用该方法!!! ...

2018-12-12 21:53:09 676 0

原创 iOS一步步妆点动画使界面元素迸发新活力

本博在iOS原有静态界面的基础上,一步步尝试使用动画来突出选择动作,使原来呆板的元素瞬间鲜活了许多,为用户打造活力满满的界面。 没有动画的世界 原来的界面很简单,用户通过段选择器(UISegmentedControl)来选择切换两个不同的UILabel,如下所示: 由上至下两个UILabel...

2018-12-05 14:07:59 334 0

原创 iOS解决控制器转场和返场界面卡顿的一种方法

本博介绍了在控制器转场和返场时界面发生卡顿的一种解决方法,主要思想是使用视图快照功能来提供一个静态的伪视图以提高性能. 转场和返场 转场是指从控制器A切换到控制器B中,这意味着控制器A被隐藏: 控制器A -> 控制器B 而返场是指从控制器B切换回控制器A,这意味着控制器A重新被...

2018-12-02 16:33:41 1582 0

原创 iOS:UITableViewCell中Label位置无法正确约束的问题

由于UITableView中某一行文字过多,需要扩展Cell的高度,该Cell的样式是.subtitle: 注意其中的detailTextLabel并没有垂直居中!!! 咋一看解决应该很简单,做一个约束不就行了: $0.cell.detailTextLabel?.snp.updateConstr...

2018-12-01 09:40:47 541 0

原创 Swift中由找不到removeAll(where:)方法引起的连锁反应(下)

提示:本篇博文涉及到第三方库Eureka,但核心思想在于Swift内部数据处理的推断,不了解Eureka并不影响对本文的理解。Eureka只不过是对UITableView的便捷包装而已,需要进一步了解Eureka的童鞋可以观赏本猫Eureka学习系列博文。 上篇在此 : Swift中由找不到...

2018-11-29 12:25:13 431 1

原创 从App随机崩溃(KVO_IS_RETAINING_ALL_OBSERVERS...)到彻底修复的回顾(上)

本博通过具体的实例向大家展示如何一步步通过合(xia)理(cai)分析找出问题的罪魁祸首,适合有一定调试经验的童鞋,也欢迎各路神仙和小白围观,本人水平一般,欢迎指正,但我就是不改. 崩溃特征 0.崩溃的类型是EXC_BAD_ACCESS 1.App崩溃虽说是随机的,但在一定次数的相同...

2018-11-27 11:06:53 2325 7

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