热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

为什么可选链接会导致重叠的访问错误?

如何解决《为什么可选链接会导致重叠的访问错误?》经验,为你挑选了1个好方法。



1> Dávid Pászto..:

结构是值类型,因此在执行操作时let foo = someOptional?.foo,的someOptional?.foo被复制到局部变量中foo。因此,在下一行中,someOptional?.bar = foo您不再someOptional有权获取的值foo,而是直接访问局部变量的值。

这就是为什么someOptional?.bar = someOptional?.foo不等同于上述解决方案的原因,并且为什么将值保存到局部变量可以解决重叠访问错误。

错误的原因还在于您正在使用值类型。在这一行中,someOptional?.bar = someOptional?.foo您正在更改的实例属性,someOptional因此也更改了该实例someOptional,同时恰好同时访问的另一个实例属性someOptional

如果someOptional是引用类型,则不会出现该错误,请参见下文:

class SomeClass {
    var foo: NSString? // `NSString` is a reference type
    var bar: NSString?
}

let someOptionalClass: SomeClass? = SomeClass()
someOptionalClass?.bar = someOptionalClass?.foo

let fooRef = someOptionalClass?.foo
someOptionalClass?.bar = fooRef


推荐阅读
author-avatar
手机用户2502922083
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有