
iOS开发
DonnyDN
代码是写给人看的,只是刚好能运行。
展开
-
iOS中Block使用注意点及常见问题浅析
本文将浅分析几个Block使用问题: - 问题一:Block作为类变量属性时为啥用copy修饰?堆栈存储位置是怎样的? - 问题二:为什么需要__block 修饰自动变量后,才能在Block中更改? - 问题三:关于常见block中self的循环引用问题,可以用__weak打破强引用链;那么为什么AFN或像UIView动画不需要弱引用self?原创 2017-08-31 18:14:04 · 3133 阅读 · 0 评论 -
#if#ifdef#define等宏定义使用
#if#ifdef#define等宏定义使用原创 2017-09-02 13:34:27 · 4344 阅读 · 0 评论 -
使用xcconfig文件定义多种环境变量
使用xcconfig文件定义多种环境变量原创 2017-09-02 13:36:02 · 1978 阅读 · 1 评论 -
处理json里的null值+NullSafe源码阅读
后台服务器返回给客户端的值有时会是null,直接赋值操作会导致崩溃。 用OC的运行时机制,处理消息转发,避免crash产生!原创 2017-10-13 14:52:31 · 1574 阅读 · 0 评论 -
forin遍历数组并增删其元素导致崩溃
forin遍历数组并增删其元素导致崩溃当程序出现这个提示的时候,是因为用快速遍历forin遍历数组,又同时增或删这个数组里面的内容,导致数组count发生变化,猜测在forin快速遍历的内部有个内置的不会动态改变个数的计数器, 当你的数组做出增删后, 计数器并没有相应的增减, 这样就会导致继续通过计数器获取数组, 造成数组越界。原创 2017-11-06 11:11:18 · 1811 阅读 · 0 评论 -
iOS深浅拷贝,看完就会
浅拷贝:只创建一个新的指针,指向原指针指向的内存深拷贝:创建一个新的指针,并开辟新的内存空间,内容拷贝自原指针指向的内存,并指向它假设我们要对一个不可变的对象进行不可变copy(原来的对象不可变,新对象也不可变)。就没必要给新对象新建一块内存,反正大家都不可以对这个对象进行改变,那都使用一个就可以。所以iOS系统规定浅拷贝引用计数器加1就行。而需要给新对象开闭内存空间的,就是深拷贝。 ...原创 2018-02-26 19:45:28 · 1422 阅读 · 0 评论 -
组件化之pod私有库创建步骤
随着项目越来越复杂,模块越来越多,这时候可以使用组件化方式解耦,分块管理代码,组件化方式很多,CocoaPods是组件化方式之一。 1.pod私有库,别人看不到你的源码; 2.pod私有库可以减少项目合并造成的冲突,整洁易管理; 3.但是增加了维护成本,修改代码就需要上传更新库版本;由于GitHub私有库收费,这里使用码云托管平台(还有GitLab/Coding等平台)...原创 2018-04-05 00:42:57 · 3003 阅读 · 0 评论