Swift中的指针

Apple 期望在 Swift 中指针能够尽量减少登场几率,因此在 Swift 中指针被映射为了一个泛型类型,并且还比较抽象。这在一定程度上造成了在 Swift 中指针使用的困难,特别是对那些并不熟悉指针,也没有多少指针操作经验的开发者 (包括我自己也是) 来说,在 Swift 中使用指针确实是一个挑战。在这篇文章里,我希望能从最基本的使用开始,总结一下在 Swift 中使用指针的一些常见方式和场景。这篇文章假定你至少知道指针是什么,如果对指针本身的概念不太清楚的话,可以先看看这篇五分钟 [C 指针教程 (或者它的中文版本),应该会很有帮助。 初步 在 Swift 中,指针都使用一个特殊的类型来表示,那就是 UnsafePointer<T>。遵循了 Cocoa 的一贯不可变原则,UnsafePointer<T> 也是不可变的。当然对应地,它还有一个可变变体,…

Read this article

震惊,惋惜!

你是bytedance三面的面试官,是我入职后第一个见的人,也是我直属leader。 记得你加我微信的第一句话就是“一个优秀的开发者,都有着自己的博客。你的博客我刚刚拜读完了”,而我的第一句话是“能和一群优秀的人一起工作,是我的荣幸”。 我看了下你的朋友圈,85后,五年腾讯视频OMG履历,之前还呆过盛大,第一印象,大佬! 刚入职的时候,压力很大,每天都很拼命的去花很多时间去学习团队文档,规范,基本都是晚上10点才走,然后你lark消息提醒我让我注意下休息,没事就早点回家。刚开始我以为你家就在附近,后来才知道你家在福田,每天基本都在我之后才走。 每天早上,我都会提前40分钟至1个小时到公司,我觉得这段时间能自由干点自己的事情,比如看看书提升一下,或者完成一下昨日未做完的事情。几乎同一时间我刚坐下打开电脑,你就会背着书包从我椅子后面走过,打一声招呼“早”。 由于你是team负责人,又坐在我旁边,又是我们新项目Bitable四人小分队的一员,每天我都看得到你忙里忙外,从各种会议到新项目规划与开发,再到与下属的OKR制定与建议,几乎每天的时间都已经安排到秒。 我曾自己多次想问一下你是如何在这样的强度下保持活力的,因为你给我的印象是无限精力和活力,你不像一位传统的leader,公司企业文化扁平,不提倡等级制度,平时都是直来直往像一位朋友。你和我年纪相差也不大,但体现出异乎常人的责任心和专注。…

Read this article

vConsole预研

介绍 一个轻量、可拓展、针对手机网页的前端开发者调试面板 Github传送门:https://github.com/Tencent/vConsole 功能 查看 console 日志 查看网络请求 查看页面 element 结构 查看 Cookies 和 localStorage 手动执行 JS 命令行 自定义插件 理解 前端同学在开发Browser端时,能使用Chrome自带一键F12检查功能来方便调试,但是在移动端就没这么方便了。可能也有其他类似支持安卓调试的Chrome插件等辅助使用,但是个人感觉都没有vConsole直接在手机上使用这么直观、简单。对于vConsole框架,简单来说,就是为了方便前端在移动端调试时而开发的一套控制台系统,能够直接在移动设备一键展示打印日志、网络请求、查看Cookie等功能,最库被编译压缩成一个vconsole.min.js文件,前端使用时直接引入该文件即可。 实验和演示 为了演示和实验前后端交互和使用方法,深入了解整个流程,直接一部刨到问题的 祖坟。我用Java简单写了一个本地web系统,使用的是JavaWeb全家桶tomcat+…

Read this article

iOS架构设计与优化(三)

之前介绍了在项目层面如何去进行数据解耦和服务中间件的实现,这篇主要介绍在MVC模块内部如何不用MVVM而达到MVVM解耦的效果 我们都知道,MVVM设计模式是在MVC使用过程中日益庞大而不易维护的背景下应运而生的,设计思想和目的都是为C减负,将C中的业务和一些能抽出的逻辑代码抽出到VM中处理,使整体项目结构达到低耦合、高内聚 废话不多说,还是用一个实例来对比说明 页面为一个常规列表页,列表中展示的为订单信息,cell样式根据订单状态可能有两种样式,一种需要付款的状态cell样式,另一种不需要付款的状态cell样式,两种样式的cell高度不同 一种MVVM的实现 // Model struct OrderSummaryModel { var orderNumber: String? var orderState: Int? var orderDescirption: String? var orderAmount: String? var orderCreateDate: String? var orderNeedPay: Bool? = false ... } // View class OrderCommonCell: UITableViewCell { //MARK: Property var orderNumbrerLabel: UILabel! var orderStateLabel:…

Read this article

Swift性能相关

由于Swift4已经趋于稳定,最新的项目开始使用Swift开发,之前只是在自娱自乐中用过Swift,并未进行深入研究和应用到实际开发,而且还有一些疑惑,这几天查阅相关资料之后做了一些总结 Swift中的类型 平凡类型 有些类型只需要按照字节表示进行操作,而不需要额外工作,我们将这种类型叫做平凡类型 (trivial)。比如,Int 和 Float 就是平凡类型,那些只包含平凡值的 struct 或者 enum 也是平凡类型 struct AStruct { var a: Int } struct BStruct { var a: AStruct } //AStruct和BStruct都是平凡类型 引用类型 对于引用类型,值实例是一个对某个对象的引用。复制这个值实例意味着创建一个新的引用,这将使引用计数增加。销毁这个值实例意味着销毁一个引用,这会使引用计数减少。不断减少引用计数,最后当然它会变成 0,并导致对象被销毁。但是需要特别注意的是,我们这里谈到的复制和销毁值,只是对引用计数的操作,而不是复制或者销毁对象本身 struct…

Read this article