• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift学习(4懒加载、计算型属性、反射机制)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

懒加载、计算型属性、反射机制

1.懒加载:

目的:1.延迟创建,需要时加载,节省内存空间

2.避免开发中处理解包的问题(重要!!!)

 

知识:1.所有的UIView 及子类在开发是,一旦重写了够着函数,必须要实现initwithcoder函数以保证提供两个通道,目前Xcode会有提示。

2.在swift中懒加载的简单写法

lazy var label:UILabel = UILabel()

3.懒加载本质上是一个闭包,完整写法如下:

{}包装代码  ()执行代码

lazy var labe = {()->UILabel in

let l = UILabel()

return l

}()

注意的是了解就好,因为日常开发法中在闭包中的提示不太好,且需要注意循环引用

4.懒加载和OC的区别:

(1)在OC中是使用get方法实现懒加载的。

(2)OC中只要设置成nil以后,可以再通过get方法重新加载,而在swift中懒加载只能加载一次,如果设置成nil以后,就不能直接通过懒加载重新创建

 

2.计算型属性

引导:

1.getter & setter 仅用于演示,日常开发不用:

private var _name:String?

var name:String{

get{

return  _name

}

set{

_name = newValue

}

}

2. readonly  的实现:重写getter方法,通过只写get方法实现。

var title:String{

get{

return “mr 老王”

}

}

计算型属性:

1.readonly 简写  :直接return

var title:String{

return “老王”

}

其实这就是一个计算型属性:本身是不保存内容,都是通过计算获得的。类似于一个函数,没有参数只有返回值,每次计算都会重新计算一次。

 

3.懒加载和计算型属性的区别

1.代码非常类似!!! 懒加载只是多了一个 ‘lazy’ 和’=’

2.懒加载会在第一次访问的时候执行,闭包执行结束后会保存结果到属性,第二次调用的时候是不会重新执行闭包的。计算型属性每次访问都会执行一次闭包

 

4.利用重写set方法实现通过模型赋值改变UI

var person:Person? {

didSet {

//此时name属性有值,可以直接使用

self.text = person?.name

}

}

 

5.命名空间&反射机制

1.反射机制的概念

(1)在任意一个类,都能通过方法来获取这个类的所有属性和方法

(2)对于任何一个对象,都能调用他的任意一个方法和属性

(3)这种动态获取信息及动态的调用对象的方法功能成为Java 语言的反射机制

2.在OC中如何使用反射机制

(1)利用NSClassFromString 方法来使用字符串获取类

(2)isMemberofClass

(3)isKindofClass

(4)conformstoprotorol

(5)respondstoselector

(6)performSelector 或者obj_msgSend

3.主义事项:

(1)在Swift中有命名空间

(2)在同一个命名空间全局共享

(3)第三框架使用swift如果直接拖拽到项目中,从属于同一个命名空间可能会有重提

(4)在Swift中 NSClassFromString 是需要在前面添加命名空间的,例如: let clsName = “反射机制.ViewController”

(5)反射重要的目的就是为了解耦

(6)可以搜索“反射机制和工厂方法”继续学习反射机制

4.动态获得命名空间:

4.1 在info.plist中  bundle name 就是命名空间

4.2 info.plist 需要从bundle.main.infoDictionary读取

4.3 所以命名空间为:Bundle.main.infoDictionary[“CFBundleName”]

4.4 通过写分类实现代码精简:

4.4.1 通过函数调用

4.4.2 通过计算型属性。这种方法可以增加代码的可阅读型。

 

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用swift3.0高仿新浪微博发布时间:2022-07-18
下一篇:
如何在Swift里用UnsafeMutablePointer发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap