最近在公司闲来无事,就在网上找各类项目来学着作,基本都是OC的,而后本身差很少翻译成Swift。但是写着写着的时候发现本身Swift那个蛋疼啊,愈来愈感受本身不懂Swift,因此写下一些本菜鸟碰到的一些问题与你们分享。网络
setter与getter算是比较蛋疼的问题了,由于以前习惯的OC的思惟,因此老想着用OC的习惯去写setter和getter,因而就碰到了下面一些比较低级的错误了。spa
本菜鸟一开始觉得是内存错误了因而开始一顿乱找,纠结半天以后发现原来是递归了,在前一句加上打印语句,翻译
接着运行发现调试时打印以下调试
顿时脑海里想各类解决方法,无果(get这样也是一样的错误)。彻底和OC的不同的,不能用OC的习惯去写Swift。orm
而后在官方文档里看到有计算属性与存储属性这两个概念,顾名思义,计算属性不是用来存储变量或者常量的。结合网络上的各类方法,后得出一套解决方案。递归
定义两个变量。第一个用来作计算属性,并不存放具体的值,第二个才是存储属性。在计算属性中的setter里给存储属性赋值,getter里返回存储属性的值,运行结果以下内存
打印:文档
固然,真正应用中不会像这段示例代码那么简单,setter 与getter中确定会作更多处理,这里只是给你们展现一下效果。若有说的不对的地方,跪求大神指教,但愿对你们有所帮助!get