随笔分类 -  iOS

iOS,Objective-C, Swift
摘要:最近遇到一个签名的问题,借机把iOS签名相关知识点研究了一下。现总结如下:(研究过程中参考了这位仁兄的博客。很全面,本文也有部分借鉴) 非对称加密 这个是签名机制的算法基础。所谓非对称加密的是相对于对称加密来说的。对称加密是加密方和解密方约定一个相同的密钥和加解密算法。只要获取了这个密钥,则可以破译 阅读全文
posted @ 2017-12-28 14:59 self.refactoring 阅读(1091) 评论(1) 推荐(0) 编辑
摘要:在开发阶段我们我们经常使用自签名的证书来部署我们的后台rest api。但是在iOS中调用的时候就会因为证书不被信任而调用api不成功。这时候我们就需要通过实现某些网络回调函数来自定义证书的验证逻辑。(在iOS中一般通过UrlSession(OC中是NSUrlSession)来进行网络通信,这里以U 阅读全文
posted @ 2017-11-08 23:07 self.refactoring 阅读(2355) 评论(0) 推荐(0) 编辑
摘要:平常的app开发中只调用Rest Api可能用不到Cookie,但是当要在App中内嵌WebView就有可能要用到。最近用到了这一块的东西,总结一下。 Cookie原理 关于cookie的原理简单描述就是下图: server通过Set-Cookie或者Set-Cookie2来告诉浏览器存储cooki 阅读全文
posted @ 2017-11-07 22:12 self.refactoring 阅读(1478) 评论(0) 推荐(0) 编辑
摘要:XCode提供了一组用于检测内存,调试动画,布局等的工具。对于调试一些性能问题,内存问题非常方便。这里我们使用Leak来发现代码中的内存泄露。 在Leak中启动我们的应用开始监控: 注意,在监控的时候有两种选择:All Heap Allocation,All Heap Allocation & An 阅读全文
posted @ 2017-11-01 20:03 self.refactoring 阅读(528) 评论(0) 推荐(0) 编辑
摘要:1. 为什么会Crash 常见的Crash原因有:访问已经被释放的内存,数组越界,使用!解包值为nil的变量。当遇到这些情况时,说明应用已经遇到了很严重的非预期错误,无法再继续运行。操作系统检测到这些非法操作时会向应用发送对应的信号,而应用对这些信号的默认处理是直接让应用退出(已信号值作为退出码)。 阅读全文
posted @ 2017-07-01 22:45 self.refactoring 阅读(3316) 评论(0) 推荐(0) 编辑
摘要:1. 背景 CocoaPod是Swift,Objective-C语言编写的Cocoa项目的依赖管理工具。简单点说就是它管理了很多的Swift和Objective-C的库,然后通过CocoaPod可以比较容易的在自己的项目中引用与管理它所提供的各种库。CocoaPod本身是用Ruby开发的,可以在Ma 阅读全文
posted @ 2017-05-01 22:15 self.refactoring 阅读(620) 评论(0) 推荐(0) 编辑
摘要:CAShapeLayer是用来接受矢量Path,直接使用GPU来进行渲染的特殊图层。看下面效果: 对应代码: 我们生成了由一个矩形内嵌一个椭圆而形成的Path,然后交由CAShapeLayer渲染。中间椭圆呈现空心的原因是因为我们设置了fillRule为kCAFillRuleEvenOdd. 下面解 阅读全文
posted @ 2016-11-28 00:06 self.refactoring 阅读(3896) 评论(0) 推荐(0) 编辑
摘要:frame: View在它的Super View坐标系里的坐标 bound: 用来定义View自身坐标系和边界的Rect,Rect的原点表示View自身坐标系的原点坐标。举个例子: 一般情况下bound的值为(0,0,width,heigh),其中0,0表示View自身坐标系的原点坐标为(0,0) 阅读全文
posted @ 2016-11-01 13:15 self.refactoring 阅读(509) 评论(0) 推荐(0) 编辑
摘要:CATransaction 当我们在自定义的图层上修改某些支持动画的属性时,系统会为该属性的修改自动产生动画。这种其实属于隐式动画。隐式动画要得益于CATransaction. 一个CATransaction从调用CATransaction.begin()开始,以CATransaction.comm 阅读全文
posted @ 2016-10-29 23:34 self.refactoring 阅读(799) 评论(0) 推荐(0) 编辑
摘要:@property 定义一个属性@synthesize 告诉编译器自动为属性自动生成 getter 和setter方法在定义属性的时候会用到如下@attributesnonatomic,告诉编译器不要为该属性进行多线程并发访问控制。这样可以提高性能。readonly,告诉编译器该属性为只读属性readwrite,告诉编译器该属性为可读写属性strong,给该属性赋值时,对值进行强引用,即对值进行引用计数加1.weak,给该属性赋值时,对值进行弱引用,不对值进行引用计数加1.assign,给该属性赋值时,只进行简单赋值,不更改引用计数copy,给该属性赋值时,对新值进行拷贝(新对象引用计数为1) 阅读全文
posted @ 2014-02-28 12:55 self.refactoring 阅读(724) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示