Swift学习(3面向对象)

Posted MakeKeyResuseable

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift学习(3面向对象)相关的知识,希望对你有一定的参考价值。

swift面向对象

1. 在swift中,默认在同一个项目中(同一个命名空间下),所有的类都是共享的,不需要import 所有的属性 var 也可以直接访问到

 

2.在swift中,所有的类都默认有一个命名空间,就是项目名称

 

3. ()  -> alloc  init。  swift中对应一个init()构造函数,作用是给成员变量分配内存空间并初始化

 

4.构造函数的写法:

一:必选属性的构造方法

1.给自己的属性分配内存空间并设置初始值

2.调用父类的构造函数,给父类的属性分配雷村空间设置初始值

3.NSObject没有属性,只有一个成员变量 isa

 

5.重载函数方法:函数名相同, 但是参数和个数不同。可以给自己的属性在外部调用的时候赋初始值。OC是没有重载的

 

6.如果重载了构造函数,并且没有实现父类的init方法, 系统将不再提供init() 构造函数。因为默认的构造函数是不能给本类的属性分配内存空间

 

7.控制台用 p 命令获取对象信息

 

8.构造函数(KVC),在手机开发中内存很宝贵,有些属性并不是必须分配空间的。 

延迟加载:在需要的时候才创建

如果是模型属性的时候,如果是对象,通常都是可选的、简化写构造函数的时候的代码

KVC的方法是OC的方法,在运行时给对象发送消息,要求对象已经实例化完成!

在使用KVC方法之前,应该使用spuer.init()实例化

给基本数据类型初始化是不能设置成可选的,必须提前设置初始值。否则KVC会崩溃

如果是私有属性 private  ,使用KVC设置值的时候,同样会无法设置,KVC会崩溃

在swift中,属性和方法设置private,是绝对禁止外部访问的!不会像OC中一样通过运行时获取到所有的方法和属性

同OC一样,字典中的key如果类中没有队形的属性与之对应,则需要重写setvalueforundifindkey

 

9.Swift 运行时加载属性列表:类似OC

1.获取’类’的属性列表

2.遍历数组

3.根据下标获取属性:objc_property_t?

4.获取属性的名称的C语言字符串

5.转换成string

6.释放C语言对象

7.推荐使用guard 依次判断可选项

 

10.基本数据类型,在OC中没有可选,如果定义成可选,运行时同样获取不到,使用KVC会崩溃

 

11.private 的属性,使用运行时是,同样获取不到属性,使用KVC会崩溃

 

12.闭包的所有参数是需要自己写的,OC是直接带入

 

13.练习用URLsession 加载百度

 

14.便利构造函数

1.判断条件,只有条件满足才实例化对象

2.简化对象的创建

3.本身不负责属性的创建和初始化操作

4.便利构造函数允许返回nil,正常的构造函数一定会创建对象,判定给的参数是否符合条件,如果不符合则返回nil,不会创建对象,减少内存开销!

5.只有便利构造函数中使用 ‘self.init’ 构造当前对象

6.没有convenience 关键字的构造函数是负责创建对象的,反之是用来检查条件的,本身是不负责对象的创建

7.如果要在便利构造函数中使用当前对象的属性,一定要在 self.init 之后

 

15.使用便利构造函数重构加法计算器

1.Swift分类的写法

2.利用便利构造函数 用分类的方式给一些控件的属性写默认值

 

16.实战1:写一个私人通讯录

 

//demo下载地址:https://github.com/fushengit/Learn-Swift

以上是关于Swift学习(3面向对象)的主要内容,如果未能解决你的问题,请参考以下文章

Python 3学习 ——面向对象

Swift 中的面向协议编程:是否优于面向对象编程?

JAVA学习---面向对象基础

swift 面向对象的Swift

java学习笔记之面向对象

python 3.x 学习笔记9 (面向对象)