iOS安全开发笔记0——工具安装
1、将终端换成iTerm
下载地址 https://www.iterm2.com/downloads.html
安装zsh,在终端输入命令
|
|
使用下面的命令启用zsh
|
|
打开 ~/.zshrc文件,将主题改为agnoster
.
|
|
下载地址 https://www.iterm2.com/downloads.html
安装zsh,在终端输入命令
|
|
使用下面的命令启用zsh
|
|
打开 ~/.zshrc文件,将主题改为agnoster
.
|
|
lldb,一个强大的debug调试工具,这里记录一下常用的命令。下面的命令都可以使用 help + 命令+ 子命令 来查看帮助菜单。
lldb调试的断点是可以在 ~/.lldbinit 里面写入加载的脚本,我们可以将一些通用的命令写进去。
expression这个命令应该是最常用的,可以方便地进行打印各种对象信息或者执行代码。一般我们用到的都是它的简写:p 、 exp 和 po。
p 或者 exp 后面可以直接接OC的代码
po 后面则是接需要打印的对象
这个可以用来设置和管理断点,就像在代码区左边点一下一样。常用的命令有
设置断点,这个方法会将UIViewController的touchesBegan:withEvent:设置一个断点
|
|
后面可以带几个-n参数。注意的是这样设置的断点会归为一个组,里面的断点是这个组的第几个断点,比如下面语句会生成断点组1,里面有1.1的断点和1.2的断点。
|
|
带不同参数的时候
在《iOS基于CoreGraphics的可变粗细的划线》的wiki上,已经介绍了现在使用CoreGraphics绘制可变粗细线条的方法,也就是每两个点就调用一次stroke方法绘制一条线段。这个在不透明的情况下没有问题,最多就是性能差点。但是你把绘制的颜色调节成透明的时候,你会发现一个很恶心的现象,一条线段变成了一节一节的。就像下图那样
之前的文章有提及过现在Drawing里面使用的画图方式:基于系统的CoreGraphics框架的CGContextAddLineToPoint来进行绘制,但是这些都有个问题,你会发现你调用stroke之前,只能设定唯一的宽度,当你调用stroke的时候,该path里面的点都会以这个宽度进行绘制。为了实现宽度可变,原生接口只能采用一个很极端的方式:每两个点就调用一次stroke方法,也就是说每两个点组成一个path,然后改变不同的path的宽度就可以绘制出一条可变宽度的线段。
代码如下:
在iOS平台,drawInRect是重绘一个控件的方法,在这里可以拿到这个控件的一个上下文对象,可以往这个上下文对象里面画线或者其他一些简单图形。所以最开始做的简单方法就是在onTouch事件中收集到点的数据,然后在drawInRect方法里面绘制每一帧的时候,从第0个点重新绘制到最新的点。
用户在画图过程中,系统从屏幕上获取到的是离散的点。而且这个点的获取是有一个最高频率的,当用户在屏幕上滑动速度很快的时候,获取到的两个点就会距离较远。
#
这里说的视频制作并不是从摄像头录制视频,而是如何将一帧一帧的图片合成一个视频文件。这里我们所使用到的类是AVAssetWriter,它的使用方式比较固定,且代码也比较多。
首先是设定好AVAssetWriter
UIDocument是iOS的一个负责文件读取和存储的类,对于文档类的应用,使用这个类可以省去存储和读取时候线程的一些麻烦事情。尤其是和NSUndoManager配合之后,可以做到自动存储,很方便。
UIDocument里面只是一套存储和读取的逻辑框架,至于怎么读取和怎么存储,都是需要你自己去定义的。所以,一般使用UIDocument的做法就是继承它,然后实现它存储和读取相关的方法。
首先你需要创建它,这个url指定的可以是一个文件或文件夹
if语句和其他语言中的使用是一样的,只是语法稍有不同。首先是不用括号,其次是即使是if后面只有一条语句,也必须加上大括号。
集合类分为array、dictionary、set。每个集合都有一个isEmpty属性来判断这个集合是否为空
创建array的四种方法