首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLLocation拷贝

CLLocation拷贝
EN

Stack Overflow用户
提问于 2015-02-26 18:33:38
回答 1查看 432关注 0票数 0

我继承了这段代码,并试图弄清楚为什么其中有一个copy

代码语言:javascript
复制
- (id)initWithLocation:(CLLocation *)inLocation {
    if (self = [super init])
    {
        _location = [inLocation copy];
    }
    return self;
}

也就是说,为什么你需要在CLLocation上做一个deep copy,使用_location = [inLocation copy]而不仅仅是_location = inLocation

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-02-27 00:34:01

对于原始作者来说,一个可能的原因是为了防止从表示层到模型对象(即位置)的强引用,这可能会对模型对象的生命周期造成严重破坏。通过复制,您将获得一个新的独立实例,该实例与模型层中的实例匹配。

我必须说,这是一个很好的实践。没有理由说明为什么在表示层上以“平面2D”方式呈现的任何内容都应该是活动模型对象实例。当然,我意识到新的location实例也是一个真实的对象实例(而不是原始值),但它的用途仅限于在UI层中“挂起”并随其消亡。有一种趋势是将一些以前在Objective-C中是对象的类型取消对象化,而现在它们在Swift中是结构。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28740070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档