swift中修饰词,fileprivate、private、internal、public 、open 及lazy的使用

本文详细介绍了Swift中的访问修饰符,包括fileprivate、private、internal、public和open,并解释了它们之间的区别及适用场景。此外,还深入探讨了lazy关键字的作用及使用方法,帮助开发者更好地理解和应用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在swift开发语言中,访问修饰符就fileprivate、private、internal、public 、open这五种。其中fileprivate和open是swift3中添加的;由于之前的swift对于访问控制是基于文件的,在swift3中就出现问题,就添加两个修饰符对原来的private和public进行细分,是的swift访问更加灵活,程序耦合行降低。

 

1、private:所修饰的属性或者方法,只能在当前的类中访问。

2、fileprivate:访问级别所修饰的属性或者方法在当前的swift源文件里可以访问;

3、internal:默认属性,在这个源代码所在的模块或者整个APP代码都可以访问。当时框架或者库代码则在这个框架内部都可以访问,框架外部引用时则不可以。

4、public:公共的,可以被任何使用。但是其他module中不可以被override和继承,而在module内可以被override和继承。

5.open:可以被任何人使用,包括override和继承。

 

5中修饰访问权限排序:

open>public>interal>fileprivate>private

 

lazy:懒加载、延迟加载或者惰性初始化属性 。一些对象的属性和内容非常复杂时,在构建对象时同时属性和会被创建分配内存,这样和会消耗不少时间;另外有些对象最初不会立即使用到,默认会创建时就会初始化,这样无疑也是一种浪费对性能影响也会较大;一次lazy关键字的使用是很常见的优化方法,有助于代码维护。

lazy在为属性修饰符,只能修饰变量,变量关键字var,使用let的常量实例化时赋值;使用场景是一个对象的属性依赖于其它属性。

swift中有两种实现机制:

简洁代码,只需要一行即可实现,声明格式:lazy var 变量名:类型

  1. lazy var tableView:UITableView = UITableView()

   若想做些逻辑上的处理,swift中允许在属性后面定义一个闭包,闭包返回值是默认值;必须注意最后的小括号,只有加了小括号,闭包才会调用立刻执行;使用[unowned self]避免循环使用

    2. lazy  var tableView:UITableView = {[unowned self] in

        let tableView = UITableView(frame: CGRectMake(0, 0, SCREENW,SCREENH),style:UITableViewStyle.Plain)

        tableView.separatorStyle = UITableViewCellSeparatorStyle.None

        tableView.showsVerticalScrollIndicator = false

        tableView.contentSize = CGSizeMake(SCREENW + 50, SCREENH - 49)

        return tableView

     }()

转载于:https://my.oschina.net/u/2532095/blog/753063

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值