FoolishTalk

谈谈技术,聊聊生活

识别iOS虚拟定位

iOS,定位,Xcode,虚拟定位

iOS虚拟定位几种方法: 使用Xcode自带Simulate Location,通过GPX文件修改; 通过Mac/PC应用修改手机定位; 通过外设修改手机定位; 逆向App,hook定位经纬度; Xcode Simulate Location使用 要使用 Xcode 的Simulate Location,可以按照以下步骤: 打开 Xcode 并新建一个iOS项目...

JSONDecoder源码分析

Codable,Swift,Swift-Foundation,JSONDecoder

前言 JSONDecoder是Apple在Swift上实现JSON转模型的类,我在17年的时候,就写过相关介绍WWDC-2017笔记—Codable,所以这里就不做详细介绍了,有兴趣可以去考个古。 因为很久之前有做过ORM数据库的封装,而JSON转模型是ORM很基本的能力,所以一直以来对这个实现很感兴趣,Swift开源出来了,难得有机会读了一下。 最早的时候,是在swift-coreli...

Git迁移文件到其他仓库保留commit

Git

在开发的过程中,往往存在架构上调整导致类需要迁移到其他的仓库,假设A仓库的目录如下: ------------------ src/ views/ index.html ... models/ index.js ... controllers/ index.js ... ...

shell空格问题

随笔,shell

folder="test example" #会出现报错 #ls: example: No such file or directory #ls: test: No such file or directory ls ${folder} #运行正常 ls "${folder}" 后来发现,这个问题是因为shell的空格问题,所以我们可以使用双引号来解决这个问题。 在第一种情况下,shell...

全局git hook的几种方式

git

前言 随着自己开发的个人项目越来越多,也给自己制定了一些git的规范,例如git commit提交日志的规范。 因为我的个人项目都是放在GitHub上,我在给项目开发新需求的时候,会新建一个issue,GitHub会给这个issue,创建一个#id(不知道正确叫法是什么),然后在开发新需求的时候,会把分支名称改成#id,这样就可以方便的跟踪项目后续问题回溯,同时还会在提交日志加上#id,类似...

Installing Lightning for Xcode

Lightning

Lightning for Xcode is an Xcode developer plugin that improves development efficiency for iOS and Mac developers. Lightning for Xcode has the following features: Extracting Method Declarations ...

WWDC-2018笔记---使用Signposts分析App性能

WWDC

正文 Signposts 可以针对某段代码块进行性能分析,并且能在Instrument中显示,并且允许我们标记一段开始和结束,然后将这两点时间发生的事情与日志关联起来。 代码如下: import os.signpost let refreshLog = OSLog(subsystem: "com.example.your-app", category: "RefreshOperation...

解决博客在Chrome里http和https混合使用的问题

Chrome Nginx

前言 今天突然发现博客的图片都无法加载了,打开浏览器控制台一看,发现是无法找到https资源报错了: Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure font '<URL>' 原来是因为更新了Chrome后,如果网站是https,会把非https的...

Mac App公证

Mac OSX

前言 从非Mac AppStore的地方下载的App,大家应该都有遇到过这样的提示: 遇到这种情况,可以在终端输入,将安全性与隐私-通用-任何来源开启,这样就可以解决了: $ sudo spctl --master-disable 但是作为一个普通用户,会认为你的App不安全,我开发的虚拟定位因为需要依赖非沙盒环境下的Magellan,也遇到这个问题,也有国外用户因为觉得这个行为...

你真的了解p、po、v区别吗

iOS,Xcode,LLDB

正文 平常在使用Xcode断点调试问题时,po可能是最常用到的LLVM命令了。 通过po命令,我们可以在Xcode的LLDB控制台打印对象的描述,系统在运行时会提供一个默认值,如图: 我们可以通过重写func debugDescription()达到我们希望在po的时候返回预期的返回值。 po的底层逻辑实现: 事实上打印对象有三种方法,po只是其中一种。 第二种方式是p。 p...