- 博客(88)
- 资源 (12)
- 收藏
- 关注
原创 Swfit 中根据条件赋值常量
刚刚学 Swift 的时候,有可能会这么写\(也可能会这么写 (应用三元运算符)\(在这里,使用三元运算符是取巧了,因为条件判断比较简单,但如果有多个条件判断,可能会变得冗长,难于阅读。\(这种写法是从 Swift 5.9 开始支持的。本质上是if可以作为表达式使用,以前 Swift 的if只能当语句用,现在它像三元运算符一样可以返回值.可以当做表达式的还有switch语句.这种写法有一定的规则.
2025-07-31 10:12:25
6
原创 只对非空元素执行循环操作,怎么办?
上面的代码中,numbers是一个可选类型的数组,包含了nil值。如果只想对非空元素进行操作,有以下几种方法for-in这是最直观的方法,通过if let判断每个元素是否非空。for-in相比if letguard let在处理大量数据时代码更清晰。compactMapcompactMapnil⚠️:这种方法会创建新数组,增加内存开销。forwhere通过where子句过滤nil值,但仍然需要强制解包。✅这是最优雅的方式,无需解包,也不创建新数组。
2025-07-24 10:52:55
36
原创 Swift 多可选值 Switch 同时处理妙招
在 case 里写 let x?表示“解包成功” , 也就是 .some(x)写 nil 表示“就是 .none”多个可选值被放到一个元组后,就能一次性判断它们是否全部、部分存在或全部缺失,并直接给出对应的处理逻辑。这样既消灭了多层 if let 的“金字塔”,又让分支意图清晰可读。
2025-07-16 11:47:57
14
原创 用元组(tuples)结合 switch 实现复杂条件判断
在实际开发中,我们经常需要根据多个变量的组合来决定逻辑走向。现在可以用元组结合 switch 来实现。例如: 用户登录状态 + 网络状态。关键字来匹配特定条件。
2025-07-15 10:15:30
12
原创 自定义模式匹配运算符,让 switch 更强大
通过为 Circle 重载 ~=,我们可以直接在 switch 中写出简洁优雅的匹配表达switch c {case 5:default:breakswitch c {case 0:print("点")print("小 Circle")default:print("大 Circle")break这种方式通过 ~= 重载,让匹配逻辑更自然、更具有语意,同时保持了 switch 的可读性。
2025-07-10 17:29:15
23
原创 别再用 if let 了,试试 map 来处理 Optional
在开发中,我们经常需要根据一个字符串来创建 URL 请求(URLRequest)。由于字符串可能不合法,因此创建 URL 的结果是可选值(URL?),进而导致 URLRequest 也是可选值。
2025-07-01 20:02:23
13
原创 在 if 语句内部直接修改解包的 Optional 值
但有时我们需要在解包后直接修改这个值,这时候就可以使用。语句的作用域内进行的,外部是没有权限的。平时写需要解包的代码时,我们通常会使用。来安全地解包 Optional 值。
2025-07-01 17:43:29
21
原创 只关心 enum 的单个 case,怎么办
在日常开发中,我们经常需要判断enum的某种具体情况并获取其关联值。很多时候我们写出的是多层嵌套的switch或者代码,显得冗长、不直观、不易维护。有没有更优雅、简洁的写法?答案是:if case let。我们要判断当前是 .success 并拿到 data 进行处理。
2025-06-27 12:12:29
158
原创 解锁PDF潜能:一站式PDF处理工具,让文件管理更高效!
别担心,今天我们将为你介绍一款功能强大的PDF处理工具,它将彻底改变你对PDF文件管理的看法!我们的拆分与合并功能可以满足你的需求。无论是按页拆分还是按章节合并,只需几个简单的步骤,你就可以得到你所需要的PDF文件。我们的PDF处理工具提供了一键解密功能,只需输入正确的密码,即可轻松解锁加密的PDF文件,让你的文件重获自由。我们的PDF处理工具提供了加密功能,你可以为你的PDF文件设置密码,保护你的隐私和知识产权。我们的PDF处理工具可以智能地获取指定目录下的所有PDF文件,让你的文件管理更加有序。
2024-04-19 18:21:17
571
原创 如何测量iOS启动过程耗时
目录main()之前耗时测量main()之后耗时测量main()之前耗时测量测量app的整个启动时间 (Instruments→ App Launch)通过添加环境变量可以打印出APP的启动时间分析 (Edit Scheme → Run → Arguments → Environment Variables) 添加 DYLD_PRINT_STATISTICS_DETAILS(...
2020-01-02 18:27:38
960
原创 Swift 代码编写的关于日志打印的需求
YzLogSwift 代码编写的关于日志打印的需求外面操作的类是 YzLog()功能debug 时打印日志,release 时不打印日志可以在 App 界面最上层显示日志,只有显示功能在浏览器实时展示APP的日志。启动server,可以在电脑的浏览器输入 http://ip:8080/ (ip为手机的IP地址)以上功能只有通过 log.info() 打印的日志才可以,log 为 ...
2019-04-18 15:32:35
490
原创 iOS 上传zip文件到php服务端demo
需求:iOS端需要写一个上传文件到服务器的功能客户端现有工程用的网络库是 Alamofire func uploadFile(_ filePath : URL){ Alamofire.upload( //采用post表单上传 multipartFormData: { multipartFormData in// ...
2019-03-07 18:25:19
1088
原创 删除 classes.jar 的类,重新打 jar 包
问题: android studio 工程不能调用高版本 api.修改 compileSdkVersion 到高版本.能解决敲高版本 api 代码的时候不提示错误.但是在编译的时候还是会报错,不识别高版本 api.最后在工程中找到原因,依赖了 android framework 打的 classes.jar. classes.jar的版本比较旧.将 classes.jar 更改后缀名 c...
2018-11-28 10:59:21
1585
原创 git clone 错误
remote: Enumerating objects: 214525, done.remote: Counting objects: 100% (214525/214525), done.remote: Compressing objects: 100% (57777/57777), done.packet_write_wait: Connection to 140.143.221.161...
2018-11-14 19:06:39
3130
原创 如何将iOS代码写的更“Swift”一点
这篇文章记录要将代码写的更像“Swift”的知识点oc中的协议(protocol)里的函数是有 @optional 和 @required 属性的。但是 Swift 中协议的方法是必须要实现的。有两种方法,一种是把协议转化为 objective-c 的方式,一种是用扩展(extension)。第一种:@objc protocol SomeProtocol{ func requiredFun...
2018-11-06 01:45:11
287
原创 flutter 页面右滑返回失效研究
flutter pop Gesture在 flutter 的页面跳转中,flutter 已经实现了iOS的右滑退出手势,但是有时候有时候会失效,带着这个问题研究了一下源码.页面跳转会用到 MaterialPageRoute 或 CupertinoPageRoute 这两个类,MaterialPageRoute 是 Android 风格的,CupertinoPageRoute 是 iOS 风格的...
2018-10-09 18:31:25
15931
2
原创 编写区块链游戏学智能合约 教程 3: 高级 Solidity 理论
该教程来自 CryptoZombies 网址:https://cryptozombies.io/zh/course/ CryptoZombies 是个在编游戏的过程中学习 Solidity 智能协议语言的互动教程。编游戏的同时学习以太坊的智能协议。关键是它免费。1. 智能协议的永固性到现在为止,我们讲的 Solidity 和其他语言没有质的区别,它长得也很像 JavaScript....
2018-09-01 14:02:01
717
原创 编写区块链游戏学智能合约 教程2:僵尸攻击人类
该教程来自 CryptoZombies 网址:https://cryptozombies.io/zh/course/ CryptoZombies 是个在编游戏的过程中学习 Solidity 智能协议语言的互动教程。编游戏的同时学习以太坊的智能协议。关键是它免费。本课会使用到一些高级的 Solidity 概念.1. 映射(Mapping)和地址(Address)我们通过给数据库中的...
2018-08-29 00:22:10
692
原创 编写区块链游戏学智能合约 教程1:搭建僵尸工厂
僵尸工厂用于生产僵尸,每一个僵尸由头部基因、眼部基因、上衣基因、皮肤基因、眼色基因、衣服眼色基因组成,每个基因数值不一样,呈现的基因外形会有差异,通过这6个基因的组合,从而生产大量形状不一样的僵尸。 8356281049284737这个数字的不同部分会对应僵尸的不同的特点,每个基因是都是由一个16位的整数组成。 例如:前两位数字是 83, 是计算僵尸的头型,我们做83 % 7 +...
2018-08-26 18:59:11
2020
原创 学习 Flutter 笔记
自己用 StatelessWidget 模仿 Scaffold void main() => runApp(new MyApp());class MyApp extends StatelessWidget{ @override Widget build(BuildContext context) { // TODO: implement build ...
2018-08-13 19:15:55
902
原创 flutter TextDecoration 和 TextDecorationStyle
TextDecoration 是用来在文本附近绘制线性装饰的类. 目前有4个属性 lineThrough 在每行文字中画一条线 none 不做任何事情 overline 在每行文本上方画一条线 underline 在每行文本下面画一条线lineThrough none overline underline ...
2018-08-10 15:19:39
7786
原创 查看 flutter 安装其它依赖项遇到的问题
运行 flutter doctor 运行以下命令查看是否需要安装其它依赖项来完成安装:flutter doctor --verbose简写flutter doctor --v该命令检查您的环境并在终端窗口中显示报告$ flutter doctor -v[✓] Flutter (Channel master, v0.5.7-pre.55, on Mac OS X ...
2018-07-05 21:37:34
19334
3
原创 NSObject 中 isa 指针源码解读
oc runtime源码 版本 objc4-723 先来一段大家都知道的知识 NSObject类在程序运行,会有多个实例对象,一个类对象,一个元类对象。 其中所有实例对象中的isa指针指向类对象,类对象中的isa指针指向元类对象。NSObject 的元类对象指向自己,其他元类对象指向 NSObject 的元类对象OC 对象都是 C 语言的结构体,所有的对象都包含一个类型为 isa_t...
2018-06-22 15:26:58
746
原创 iOS逆向学习之 Mac 登录到 iPhone
1. 登录 Mac 登录到 iPhone 是通过终端的命令行 iOS和Mac 都是基于 Darwin(苹果的一个基于Unix的开源系统内核),所以iOS同样支持终端操作,上次越狱的时候就在手机上安装Terminal,用来执行了一下命令。在逆向工程中,经常会通过命令行来操作iPhone,但是在手机上打命令太费劲了,所以就有了Mac登录到iPhone的需求。 Mac 登录到 iPhone 是通过 SS...
2018-01-22 22:20:40
1092
原创 iOS逆向学习之越狱
iPhone 6 越狱版本: 9.2.1需要 windows 系统 开始学习 iPhone 逆向,查了一下那些手机版本可以越狱http://jailbreak.25pp.com/ios/,又在 "苹果越狱"贴吧 查到两款软件,Meridian、g0blin,发现我手上的手机都不能完美越狱,只有一台 iPhone 6s可以实现不完美越狱.名词解释: 完美越狱和不完美越狱。完美越狱: ...
2018-01-22 21:20:23
2269
原创 Android Studio 单独编译WebRTC的 vad 模块
Android Studio 3.0.1Mac OS X 10.12.6先配置 jni 环境,按照一年前写的文章 android Studio jni 编程 进行配置在build 工程的时候出现错误Error:Execution failed for task ':app:compileDebugNdk'.> Error: Your project contains C++
2017-12-20 21:51:07
3758
原创 代码片段 Xcode & Android Studio
Xcode Version8.3.3Android Studio 3.0Canary 41:什么是代码片段 Xcode 中叫 code snippets,当在 Xcode 中输入快捷输入码 dowhile 并回车后,会出现如下代码 这就是 code snippets,我们可以创建一些可重用的代码块,并且在任何需要的地方使用这些代码块,它能提高我们的
2017-10-10 17:20:50
537
原创 tinypng,批量压缩脚本
该脚本用 Python 编写,应用到了tinify模块,Mac 自带 Python 环境,但是没有 tinify 模块,也没有Python包管理工具,需要先安装 pip 包管理工具,然后再通过 pip 安装 tinify,在官网下载 pip 然后解压,https://pypi.python.org/pypi/pip ,第二个在终端 cd 到解压后目录 ,然后执行sudo p
2017-09-08 15:29:45
5694
原创 git 子模块以及 在 Jenkins中如何使用
1.添加子模块2.克隆带有子模块的项目3.子模块仓库有更新,要用最新的子模块代码4.修改子模块文件内容后,提交更新5.修改子模块的 url6.删除子模块7.Jenkins配置 git 子模块
2017-08-15 14:30:26
10489
1
原创 kvo kvc
kvo1.- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context被观察者调用该函数 observe
2016-11-29 22:18:39
776
原创 android Studio jni 编程
1.创建一个Empty Activity的工程,命名为jniTest1,如果没有下载过ndk,那就那就去下载,选择菜单栏的 SDK Manager,勾选上 Android SDK -> SDK Tools-> NDK ,然后点击Apply。也可以自己下载到任意目录,然后修改local.properties(SDK Location) 文件,ndk.dir=你下载ndk的
2016-11-27 20:29:16
301
原创 Android Studio + OpenCV JNI 中的 hello world
准备OpenCV http://opencv.org/downloads.html 选择 OpenCV for Android 下载解压Android Studio 2.2.2 点击图标打开SDK Manager。选择SDK Tools ,勾选NDK ,点击Apply。要等一段时间下载,下载后的文件在\ndk-bundle。开始创建一个Em
2016-11-23 11:29:15
794
原创 iMac定时跑符号化iOSCrash脚本
首先启动 Apache 1.启动sudo apachectl -k start2.重新启动sudo apachectl -k restart设置Apache容器默认目录1.Apache配置文件所在目录 cd /etc/apache2/ 2.修改Apache配置文件 sudo vim httpd.conf 3.查找 DocumentRoot 字符串。“/”为
2016-05-27 21:45:26
493
原创 Android 获取listview中Item的可视百分比
需求: 做新闻埋点上报的时候有种上报叫展现上报。服务端要求当新闻展现超过50%后才算展现,手指做了抛的动作(手指离开屏幕前,用力滑了一下)这种在listview中显示的不算展现。猛的一看,实现太难了,后来发现函数public final boolean getLocalVisibleRect(Rect r)获取View的可视区域,比如listView 最顶层的ItemView显示一半,
2016-04-01 18:01:03
1907
原创 app覆盖安装后,桌面快捷方式图标和标题被改变的解决办法
在开发android项目中,遇到一个桌面快捷方式的bug,在部分samsung手机上,app覆盖安装后,以前创建的快捷方式图标和标题变成主程序的图标和标题。一般创建桌面快捷方式是在应用程序中创建一个Intent,然后以Broadcast的形式通知Launcher修改数据库创建一个快捷方式,代码如下 public static final String ACTION_ADD_SHORT
2016-03-03 18:41:14
2884
原创 iOS Tips,不用就会忘记
1.LLDB调试打印2. UIWebView设置UA3. 预处理宏,Preprocessor Macros4. 快捷键5. 执行xcodebuild命令 不工作 xcodebuild not work , 输出 Build settings from command line: 命令后停止。用Xcode打开后就可以执行 编译命令了。6. iOS 8.3之后获取i...
2015-12-09 13:45:12
1119
1
原创 给Xcode设置 添加行 删除行快捷键功能
Xcode Version 6.1在终端运行sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist然后打开 /Applications/Xcode.app/Contents/Frameworks/IDEKit.fram
2015-09-06 16:24:09
807
Cydia-Fix.zip
2018-01-22
DrawableCenterButton
2015-08-15
MTCNNFaceDetector.zip
2019-07-01
打造高质量Android应用 Android开发必知的50个诀窍
2016-06-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人