为了账号安全,请及时绑定邮箱和手机立即绑定
函数和其他属性都可以是Anyobject 只是声明的时候要声明成Any的数组
说错了 都不是AnyObject类型
CGFloat(3.1415926)和String好像都不是NSObject类型了
二,在协议中的时候 可以把协议充当成类
is判断:是否遵守了该协议
as转换 :转换成该协议的对象,并且只能调用协议的方法
其实这种初始化有点像一个类帮另一个类初始化了,小的那个类被大的引用着。china?.CapitalCity.Country这样调用有点奇怪。
楼下说没有关系其实还是有关系的,当双方初始化的完成都需要对方的时候,而且双方属性都是let和不能为空,这时候就需要用到unowned加上!属性来解决了。
Swift内存管理笔记
一,一个对象是有生命周期的 , 它创建的时候在内存开辟的一个存储空间,消失的时候(赋值nil或作用域结束)会调用deinit方法,就像OC的dealloc 和 C++的析构一样
二,一个对象在{}里面的创建,在括号逻辑做完后就会消失。就如函数执行完或者for{}执行完就会消失 这些都是系统帮我们做的
三,当一个对象被其他对象引用或拥有的时候(在某个括号内,而且括号没有执行完),他的引用计数器加一。不管创建者引用是否还在,只要该对象引用计数不为0,他就不会被释放。
老师讲到后面 不是我们不行了 老师也不行了哈哈
先使用一个协议封装起来一些必须完成这个委托任务必须要实现的方法,如游戏的规则和tableview的行数。
创建一个类,里面有个delegate的属性,这个delegate必须遵守协议。类内部使用delegate实现任务内部的逻辑,如游戏如何进行和tableview如何通过代理的函数去布局,这些逻辑被委托方都不需要知道。
当某个类需要成为委托方的时候,把这个delegate赋值给这个类,并在里面实现协议的方法,如tableView的属性或游戏规则,这就完成了委托的任务了。
其实pet和animal有点像子父类的例子
为什么Struct中函数改变属性要加mutating呢! 因为struct是属于值类型的, 当新值传入 它需要拷贝一个新的副本去防止副本的修改影响到原属性,所以在覆盖原属性的操作中系统不知道这个新的副本要放在那里,所以加上mutating系统就知道这是一个覆盖操作 不应该开一个新的副本
把那个Subcript方法的返回值换成Any就可以做一个存放各种元素的数组了
从数据结构与算法课程过来的,讲得贼好
半个月看完,2018.11.26 打卡!感谢bobo老师的视频,讲的非常好!
课程须知
本课程适合至少有一门编程语言基础的同学用于学习Swift语言。也适合在学习使用swift进行iOS开发的过程中,遇到不清楚的swift语言问题随时查询。本课程一共分为四季,没有学习过Swift的同学请按照第一~第四季的顺序学习,有基础的同学可以挑选章节观看,巩固提高。
老师告诉你能学到什么?
这是《玩儿转swift2.0》系列课程的第四季,介绍了诸多swift语言特性。通过整个系列课程的学习,大家可以全面、深入地了解swift的语法与语言特性,理解swift的设计原则和理念,对swift语言的掌握达到中等偏上的水平。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消