18 大熊猫侯佩

尚未进行身份认证

我要认证

非自由程序员,CSDN博客认证专家。 对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。 CSDN汇编板块版主 CSDN其他开发语言大版版主

等级
TA的排名 370

iOS系统逆向工程之神探侯佩智破量子矩阵

在任何一部编程悬疑动作片里,每一个超级英雄都有一个颓废的开始…本故事纯属虚构如有雷同洗洗睡吧警告:未经允许禁止转载!!!楔子未知星球。雨还在下,漆黑的乌云压抑的想吐。极度的黑暗中,一枚红点忽明忽暗…一团黑影斜靠着墙壁,使劲的吐着烟圈…墙壁上到处都留存着纳米激光射线刻着的"S w i f t",“S w i f t U I”,“C o m b i n e”,"i O S"等残破烙印,仿佛还在宣告183年前那场世纪大战有多么惨烈…“卧底雨燕党已经211天了,还是没能查出到底他们.

2020-08-05 16:24:31

SwiftUI监听CoreData托管对象属性变化以及发生EXC_BAD_ACCESS崩溃的处理

功能需求SwiftUI在与CoreData共同协作时,我们往往希望在托管对象的自定义属性发生变化时,UI能够得到通知。有一个好消息和一个坏消息:好消息是,所有NSManagedObject都遵守ObservableObject协议,这意味着我们可以在SwiftUI中像其它可观察对象那样使用它们。坏消息是,NSManagedObject的自定义属性都没有添加@Published修饰符,所以你无法直接将其传入视图的.onReceive修改器。更要命的是,在低版本的iOS(在13.5....

2020-07-25 09:41:54

SwiftUI如何进入List编辑模式以及如何指定某些Cell不可删除

功能需求在SwiftUI中我们常用List来显示项目,而一个很常见的功能就是在List中删除指定项目所在的行。在 SwiftUI如何动态开启和禁用List的删除模式 这篇博文里,我们谈到了如何全局动态开启或关闭List的删除模式。但是如果我们只允许删除指定的项目呢?即某些行可以删除,而另一些行却禁止删除。另外在UIKit编程中,我们可以开启UITableView的编辑模式,那么在SwiftUI中我们也可以这样做么?答案是肯定的,下图演示了我们要实现的这2个功能:即:一键进入编辑模...

2020-07-16 12:59:58

SwiftUI无法监听CoreData托管对象hasChanges属性改变的原因及解决

问题现象在SwiftUI中,我们往往需要在CoreData托管对象某个属性被修改时得到通知,尤其是hasChanges属性的改变时,因为在这个时机上,我们正好可以将修改后的对象保存到持久存储中去。我们知道Combine库为每个托管对象(NSManagedObject)添加了一个publisher方法,自然地我们第一反应会这样创建发布器:p = publisher(for: .hasChanges).eraseToAnyPublisher()然后在SwiftUI视图中这样创建监听:.on...

2020-07-11 13:17:47

SwiftUI中如何优雅的为任意View绘制虚线

有时我们往往需要在界面画虚线,尤其是在View的下沿绘制。一般情况下我们可以绘制Rectangle来作为替代方案,但这样会有一些问题,比如绘制重叠。本博将会为大家展示如何为任意View的下沿绘制可高度定制的虚线,当然用的是最优雅的方式哦。;)

2020-07-02 11:21:04

Xcode更新DeviceSupport文件后真机调试在App启动时挂起的解决

问题现象为了低版本的Xcode支持高版本系统的真机调试,我们需要下载并安装对应版本的设备调试支持文件。Xcode会自动帮我们下载合适的真机设备调试支持文件并自动安装。但是,有时在Xcode安装调试支持文件后,在连接调试真机时,App启动会挂起一段时间(大约1分钟)。具体有以下两个现象:在真机上直接点击打开App没有问题挂起时查看Xcode进程面板会发现所有数值一直是zero(直到可以调试)这着实给我们带来了诸多不便 ????问题分析重启真机和Mac后,问题依旧;在不同真机设备

2020-06-27 21:04:34

低版本Xcode在没有最新DeviceSupport文件时如何调试真机

问题现象大家知道,一般来说低版本Xcode是无法去调试高版本真机设备的。我们通常采用的做法是下载最新的iOS DeviceSupport文件,放入Xcode的对应目录中。但是如果找不到最新的DeviceSupport文件怎么办?问题分析问题原因很简单,就是缺少对应版本的真机调试支持文件。一般是从网上下载或者从最新的Xcode中拷贝该文件,但是如果由于新版本推出时间很短,网上还下载不到,或者你又不想下载7、8GB的XCode,又该如何呢?举个栗子,本篇写作时iOS 13.5.1(17F...

2020-06-27 14:03:25

SwiftUI一招让List巨量数据刷新UI速度快100+倍

问题现象SwiftUI中,若List中包含大量数据,当更新数据时界面会发生严重卡顿。 前两张图分别演示了在2k条数据下,未优化时需要8.29秒,而优化后只需要0.07秒,相差118倍多。后两张图演示了在2w和10w条数据下,优化后的表现。可以看到即使数据达到10w条,更新也不会超过1秒钟,可谓相当惊人。问题分析1. List数据变化时List如何刷新?SwiftUI中使用的是“差异”比较的方式来刷新界面。因为SwiftUI是以状态驱动的,所有的数据更新都会自动触发UI的...

2020-06-25 09:45:58

SwiftUI中TabView+NavigationView适配界面时崩溃等问题的解决

问题现象若TabView的子视图中若包含有Form等组件,在快速切换TabItem时往往会导致App崩溃,错误信息为:precondition failure: attribute failed to set an initial value: xxx若TabView包含在NavigationView中,在具有刘海外观的iOS设备(比如iPhone X系列)中,由竖屏旋转到横屏再旋转回竖屏后,TabBar底部会有一小截颜色显示不正确:上图分别演示了正常和黑暗模式下,在旋转为横屏再旋.

2020-06-24 13:30:51

SwiftUI如何动态开启和禁用List的删除模式

功能需求在大多数内容管理App中,我们需要完成数据项的删除操作,可是有时候我们还需要按条件禁止用户的删除操作。如下图所示:在List的任意子View中,若用户点击红色的选项按钮展开选项面板,则禁止用户删除任何子View,只有全部子View中选项面板收起后,才允许用户进行删除操作。这样做的原因是在选项面板中有一个Slider控件,向左拖动它的把手可能会触发不该发生的删除操作,在禁用了删除操作后,就可以避免发生该问题了。功能分析1. SwiftUI如何实现List中子View的删除操作?写过.

2020-06-22 20:28:39

SwiftUI中CoreData上下文Foundation._GenericObjCError崩溃的解决

问题现象在SwiftUI中使用CoreData管理对象上下文NSManagedObjectContext时出现,App会崩溃,报如下错误:Fatal error: Unresolved error Error Domain=Foundation._GenericObjCError Code=0 “(null)”这一般发生在context.save()的时候。问题分析1. SwiftUI中使用CoreData时Xcode为你做了什么?在默认使用CoreData的Xcode项目中,cont.

2020-06-22 19:06:28

iOS中NSDecimalNumber类的一个BUG

我的编程环境是XCode 11.5。今天在测试秒表代码的时候偶然发现秒表计数会是负值,由此进行了下面的一番探索。为了精确,秒表走过的秒数用Decimal类型:@Published var elapsedSeconds_exactly: Decimal = 0.0在实际使用时需要将其转换为整数类型,由于Decimal没有直接的方法转换为整数,所以我用的是如下的迂回战术:NSDecimalNumber(decimal: elapsedSeconds_exactly).intValue前面提到秒表

2020-06-17 21:29:06

1.3 Swift语言演进

1.3 Swift语言演进小荷才露尖尖角,早有蜻蜓立上头长风破浪会有时,直挂云帆济沧海俗话说得好:要想掌握一门学科先关注它的发展史,同样的,要想学好一门语言先看它的进化史。任何一门卓越的语言,都有其独特的演进之路,Swift当然也不例外。下面我们简单了解一下Swift这只可爱的雨燕从青涩诞生到展翅成熟的历程吧。酝酿2010年7月,苹果开发部门高级总监、架构师克里斯·拉特纳 (Chris Lattner) 开始着手 Swift 编程语言的设计工作,在用一年时间完成基本架构后,他领导了一个设计团

2020-06-15 13:34:27

1.2 Objective-C语言和它的后继者:Swift

1.2 Objective-C语言和它的后继者:Swift青出于蓝而胜于蓝冰凝于水而寒于水1981年Brad Cox和Tom Love还在ITT公司任职时,接触到了SmallTalk语言,于是Cox写了一个C语言处理器,他们打算使C语言融入一些Smalltalk的优良基因。很快一个可用的C语言扩展诞生了,它就是Objective-C语言的前身。1988年Steve Jobs离开苹果公司后成立了NeXT公司,NeXT买下了Objective-C语言的授权,并扩展了著名的开源编译器GCC使之支持Ob

2020-06-15 13:32:34

1.1 Hello Swift(雨燕)

1.1 Hello Swift(雨燕)雨燕捎帘入,风花拥槛浮The Swift brings in the curtain,with the wind and flowers float on the threshold——出自刘子翚《寄张子平》1976年愚人节这一天,美国的两个年轻人在自家后院的车库里创建了一家公司,四十年后这家公司成为全球100大最有价值品牌的第一名。2007年1月,它推出了一款足以颠覆当时所有人使用习惯,令竞争对手在后续的几十年里疯狂模仿的硬件产品:iPhone。2

2020-06-15 13:29:25

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

0. 楔子其实Apple是一家实打实的硬件公司,而他们的皇牌就是iPhone。虽然每年iPhone都要老生常谈的打怪升级,每年都要有几句吸睛地广告语,但这并不影响各位果友们一年又一年"喜新厌旧"的期待心情。更何况iPhone毕竟也是诸多码农吃饭的老本,不把它摸透何来饭吃呢?所以今年的iPhone12到底会是什么样子?性能能甩11几条街?增加了什么高精尖的功能?对我们开发有什么影响?能不期待吗?So,下面就让大熊猫侯佩带领大家一起来看看吧 ???? 1. iPhone 12概览&n

2020-05-27 09:50:12

最新的iOS14操作系统全面消息重装上阵

引言病毒肆虐的神州早已恢复生机,新冠蹂躏的地球也已逐渐恢复元气!上面这两个好消息,像春风拂面,捎带着一年一度果粉期待已久的日子,伴随着最新的iOS14系统、也伴随着Apple最新的皇牌手机: iPhone12即将到来。相信各位对于iOS13正式版刚发布时的惨剧还记忆犹新,那时是各种吐槽,Apple也是第一时间反常规的连续发布了多个系统更新补丁,才勉强堵住悠悠众口。那么即将发布的iOS14又将会如何呢,它又有什么新鲜、超炫的功能呢?尽管距离苹果公司揭示iOS14还有将近一个月的时间,但有关iOS 1

2020-05-26 15:16:08

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

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

2020-05-02 10:06:48

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

问题: 为毛改变(遵守View协议的结构中)常规的成员变量会报错?“Cannot assign to property: ‘self’ is immutable” “Cannot use mutatingmember on immutable value: ‘self’ is immutable”以下代码会报如上错误:struct porque: View { @State p...

2020-04-15 17:16:45

SwiftUI: @propertyWrapper结合Combine打造可观察属性

SwiftUI视图刷新机制杂谈笼统的说,属性在被改变时想要触发视图refresh,需要满足下面两种条件之一:该对象是值类型,所有值类型都不能被修改,只能创建修改后的实例。这使得SwiftUI运行时可以捕获到这种新创建的时机,借此刷新视图。该对象是引用类型,遵守ObservableObject协议,由其中的objectWillChange发布器被SwiftUI订阅(隐式),从而在收到对象被修...

2020-04-15 14:34:05

查看更多

CSDN身份
  • 论坛版主
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024超级勋章
    1024超级勋章
    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 红花
    红花
    子板块内专家分月排名榜第一
  • 黄花
    黄花
    子板块内专家分月排名榜第二
  • 蓝花
    蓝花
    子板块内专家分月排名榜第三