Objective c 定位副本

Objective c 定位副本,objective-c,copy,cllocation,Objective C,Copy,Cllocation,我继承了这段代码,并试图弄清楚为什么其中有一个副本 - (id)initWithLocation:(CLLocation *)inLocation { if (self = [super init]) { _location = [inLocation copy]; } return self; } i、 e.您需要在CLLocation上执行深度复制,并使用\u location=[inLocation copy]而不仅仅是\u locatio

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

- (id)initWithLocation:(CLLocation *)inLocation {
    if (self = [super init])
    {
        _location = [inLocation copy];
    }
    return self;
}
i、 e.您需要在
CLLocation
上执行
深度复制
,并使用
\u location=[inLocation copy]
而不仅仅是
\u location=inLocation
,是否有什么原因


有什么建议吗?

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

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

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

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

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

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

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

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