0%

我们都知道,iOS的类中,有两个方法loadinitialize,load方法在程序启动的时候就会执行,而initialize方法在类第一次调用的时候执行,这里我们从源码的角度探究一下这两个方法的原理和实现

阅读全文 »

对于自己开发的插件,也需要使用软件源来维护和备份,可以向其他源一样,直接安装插件,这个记录一下搭建的过程

阅读全文 »

所有的程序,最终编译为机器(汇编)代码,运行起来,本质都是操作CPU的寄存器和内存,了解了寄存器和内存的操作,就能知道程序具体做了什么

阅读全文 »

正向开发的时候通常是使用xcode对app进行调试,我们先来看看xcode的调试流程

  • 手机启动app进程
  • 手机启动debugservice服务,debugserver附加到App进程
  • 调试器lldb通过连接debugservice进行调试
阅读全文 »

lldb是llvm的一个子项目,用于调试llvm编译的程序,做iOS调试时,和lldb打交道应该是最多的,本文对lldb常用的一些命令做一些整理,以便后续查阅

阅读全文 »

iOS中使用entitlement文件来描述可执行文件的权限,例如,当我们在Xcode中勾选了推送的权限,就会看到生成了一个entitlement文件,里面包含下面内容

1
2
<key>aps-environment</key>
<string>development</string>

如果勾选了Sign With Apple,会出现

1
2
3
4
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>

只有配置了对应的权限声明,并签名到可执行文件中,程序才有权限执行对应的功能,例如如果我们没有加上Sign With Apple,则苹果登录相关的接口会失败

阅读全文 »

我们在开发的过程中,经常会用到系统自带的库,如 Foundation,UIKit 等,这些库存放在什么地方呢,我们可以用 MachOView查看编译好的文件的Load Command看到依赖的动态库的路径

阅读全文 »

Cycript是由Cydia创始人Saurik推出的一款脚本语言,Cycript混合了OC、JavaScript语法的解释器,这意味着我们能够在一个命令中使用Oc或者JavaScript,甚至两者并用。它能够附加到正在运行的进程,能够查看和修改运行时的数据

阅读全文 »