摘要: 1.背景 iOS开发这几年, UI布局工具从frame到Masonry到SnapKit, sb和xib的AutoLayout也用过, 但是代码版本的AutoLayout倒是没用过, 最近一年, 频频发现一些三方UI组件布局的bug, 作为三方组件不可能去依赖另一个三方的kayout仓库, 所以只能通 阅读全文
posted @ 2018-07-27 19:19 walden00 阅读(1092) 评论(0) 推荐(0) 编辑
摘要: 文章翻译自 "Avoiding near duplicates in sets" , 作者 "Paul Hudson" "@twostraws" 是一名优秀的Swifter。 这是我第一次翻译,可能有翻译不到位的地方,如果有任何问题,欢迎反馈。学习学习再学习,加油💪! Julian Schiavo 阅读全文
posted @ 2019-11-12 15:34 walden00 阅读(1151) 评论(0) 推荐(0) 编辑
摘要: 实现一个线程安全的栈 这里使用数组来存储栈的数据。不足之处在于本例中的Stack可以无限扩容,更好的是初始化时候指定一个最大容量,防止不断扩容申请内存导致内存不够的问题。这里的线程安全使用一个串行队列来保证,实际上也可以通过加锁或者信号量甚至自旋锁来解决。 实现一个线程安全的队列 阅读全文
posted @ 2019-08-22 18:16 walden00 阅读(648) 评论(1) 推荐(1) 编辑
摘要: 1.在堆上模拟函数调用栈 背景: 在看算法书时候, 很多地方提到要谨防递归的栈溢出问题. 分析: 递归调用时候, 有可能出现非常深的函数调用. 对于每次的函数调用, 都需要将函数体内的局部变量保存在栈上, 如果函数体内包含大量的局部变量, 那么每次递归都会占用大量的栈空间, 非常容易导致栈溢出崩溃. 阅读全文
posted @ 2019-05-08 17:37 walden00 阅读(200) 评论(0) 推荐(0) 编辑
摘要: ABI是什么? 在软件开发中, 应用程序机器二元码界面 (Application Binary Interface 简称ABI)指两个程序模块间的接口; 通常其中一个车还给你徐模块会是库或者操作系统提供的服务, 而另一边的模块则是用户所运行的程序. 一个ABI定义了机器代码如何访问数据结构与运算程序 阅读全文
posted @ 2019-03-28 20:27 walden00 阅读(3226) 评论(0) 推荐(0) 编辑
摘要: 1.创建一个对象池 对象池:对象池一般用来管理一组可重用的对象, 这些对象的集合叫做对象池。 组件可以从对象池中借用对象, 完成一些任务之后将它归还给对象池。 返回的对象用于满足调用组件的后续请求, 请求可以来自一个组件, 也可以来自多个组件。 要实现这样一个功能, 需要注意两点: 1.处理好并发请 阅读全文
posted @ 2019-03-06 16:33 walden00 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 1.重写hitTest方法,干预iOS事件传递过程 如下所示,view上有一个button,button一半的frame在父类view bounds之外, 按照iOS系统默认的处理逻辑, 如果点击按钮上半部分,则按钮不会响应时间,如果点击下半部分才行, 要想让点击上半部分一样相应事件,则需要干预事件 阅读全文
posted @ 2018-06-29 15:20 walden00 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 1.遍历同时修改数组内容导致崩溃 bugly上bug提醒如下图所示,经检查发现,可能是页面上数据加载惹得祸. 页面加载过程是这样的,首先进入页面,初始化页面,将本地数据加载到array中刷新tableView,同时执行网络请求,构建array完了将数据放在tableView上面. 可能出现问题的地方 阅读全文
posted @ 2018-05-31 13:15 walden00 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 自从开始使用Swift做项目,一直都在使用HandyJSON,不可否认,HandyJSON在Swift4.0以前是个好东西,也尝试过其它json转mode的工具,最终发现还是HandyJSON最好用. 去年Swift4.0发布之后,一个最有趣的变化就是Codable协议. 一直都知道Codable来 阅读全文
posted @ 2018-05-08 16:09 walden00 阅读(4424) 评论(0) 推荐(0) 编辑