首页
Jovins
取消

03-Cycript

1.Cycript介绍 Cycript是Objective-C++、ES6(Javascript)、Java等语法的混合物。 可以用来探索、修改、调试正在运行的Mac、iOS APP 官网: http://www.cycript.org 文档: http://www.cycript.org/manual 通过Cydia安装Cycript,即可在iPhone上调试运行中...

02-Mac远程登录到iPhone

使用OpenSSH远程登录 在Mac的终端上,通过一些命令行来完成一些操作。 iOS 和 Mac OS X都是基于Darwin(苹果的一个基于Unix的开源系统内核),所以iOS中同样支持终端的命令行操作。 在逆向工程中,我们经常会通过命令行来操作iPhone。通过Mac远程登录到iPhone的方式建立连接,Mac和iPhone必须是...

01-iPhone 手机越狱教程

越狱(Jailbreak) iOS 越狱(iOS Jailbreaking)是获取iOS设备的Root权限的技术手段。 越狱类别 完美越狱 完美越狱(Untethered Jailbreak),指 iOS 设备重启后,仍保留完整越狱状态。 不完美越狱 不完美越狱(Tethered Jailbr...

删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素...

两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 注意 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 分析 该题属于基本的链表操作题。 设置一个虚拟头结点dummyHead 设置需要交换的两个节点分别为node1、node...

合并两个有序的链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路 迭代方法 每次选两个链表头结点最小的,比如:我们生活中,有两个已经按照高矮排好的队伍,我们如何把变成一个队伍!当然,每次选两个队伍排...

Swift defer 的正确使用

Swift 里的 defer 大家应该都很熟悉了,defer 所声明的 block 会在当前代码执行退出后被调用。正因为它提供了一种延时调用的方式,所以一般会被用来做资源释放或者销毁,这在某个函数有多个返回出口的时候特别有用。比如下面的通过 FileHandle 打开文件进行操作的方法: func operateOnFile(descriptor: Int32) { let fil...

Swift Error 的分类

Swift 错误类型的种类 1.Simple domain error 简单的,显而易见的错误。这类错误的最大特点是我们不需要知道原因,只需要知道错误发生,并且想要进行处理。用来表示这种错误发生的方法一般就是返回一个 nil 值。在 Swift 中,这类错误最常见的情况就是将某个字符串转换为整数,或者在字典尝试用某个不存在的 key 获取元素: // Simple Domain Err...

Swift Protocol协议

面向协议编程 依赖倒置原则:告诉我们要面向接口编程 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 解决方案:将类A...

Swift 5 中使用原始字符串

前言 Swift 5 中的原始字符串(raw string)让我们能够编写出更自然的字符串,尤其是在使用反斜杠和引号时。正如将在下面看到的那样,在某些情况下效果是很明显的,如正则表达式。 我之前在 What’s new in Swift 5.0 一文中介绍了 Swift 5 中的所有新功能,甚至还有一个专门用于跟踪 Swift 最新功能的网站。在本文中我想谈谈如何在 Swift 5 中使...