博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift学习(3面向对象)
阅读量:5046 次
发布时间:2019-06-12

本文共 1451 字,大约阅读时间需要 4 分钟。

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://www.cnblogs.com/fusheng-it/p/6842133.html

你可能感兴趣的文章
Django 内建 中间件组件
查看>>
bootstrap-Table服务端分页,获取到的数据怎么再页面的表格里显示
查看>>
进程间通信系列 之 socket套接字及其实例
查看>>
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>
模块与包
查看>>
mysql忘记root密码
查看>>
apache服务器中设置目录不可访问
查看>>
嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
查看>>
【NOIP模拟】密码
查看>>
java容器---------手工实现Linkedlist 链表
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
次序+“选择不重复的记录”(3)——最大记录
查看>>
Codeforces 450 C. Jzzhu and Chocolate
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
ACdream 1115 Salmon And Cat (找规律&&打表)
查看>>
JSON、JSONP、Ajax的区别
查看>>