问题标签 [nscopying]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 如何使 Swift 中的类实例可复制?
在 Objective-C 中,您可以通过实现 NSCopying 和 copyWithZone: 使您的类实例可复制。你如何在 Swift 中做类似的事情(不使用 Foundation)?
objective-c - How do I release C style arrays?
I have a QuantumClone
class which has an array of CGPoint
s. The single QuantumPilot
object creates a QuantumClone
at the beginning of each level. During the next level the QuantumPilot
records its velocities to its QuantumClone
. At the beginning of a new level the game loop runs this code
But eventually the game will be reset and each QuantumClone
object in the clones NSMutableArray
will be removed.
Am I leaking memory by assigning values to the CGPoint pastVelocities[4551]
?
How do I reset these? I can't release them since they are not Objective-C objects. Do I need to call C functions to release this memory?
cocoa - 任何不使用现有 NSCoding 方法来实现 NSCopying 的理由
给定一个实现 NSCoding 的类,是否有理由不使用这种模式来实现 copyWithZone: 的实现:
ios - 如何使用 copyWithZone 进行深层复制以复制结构?
我有一个代表结构的类。
此类称为Object
具有以下属性
children
是其他Object
s 的数组。parent
是对对象父对象的弱引用。
我正在尝试复制并粘贴此结构的一个分支。如果选择了根对象,parent
则显然是 nil。如果对象不是根,它有一个父对象。
为了能够做到这一点,种类的对象Object
必须符合NSCopying
和NSCoding
协议。
这是我在该类上的这些协议的实现。
您可能已经注意到,我没有参考检索或存储self.parent
,initWithCoder:
因此encodeWithCoder:
,对象的每个子对象都带有 parent = nil。
我只是不知道如何存储它。仅仅因为这个。假设我有这个结构Object
。
当encoderWithCoder:
启动它的魔法编码ObjectA
时,它也会进行编码,ObjectB
但是ObjectC
当它开始编码时,ObjectB
它会找到一个指向父引用的父引用ObjectA
并将再次启动它,创建一个挂起应用程序的循环引用。我试过了。
如何编码/恢复该父引用?
我需要的是存储一个对象,并在恢复时恢复一个与存储的相同的新副本。我不想恢复存储的同一个对象,而是一个副本。
注意:我已经//*
按照 Ken 的建议添加了标记的行,但是_parent
对于initWithCoder:
应该具有parent
ios - Mantle MTLModel 的 copyWithZone:深拷贝?
假设我们有一个MTLModel的子类,并且该类立即获得copyWithZone:的实现。但是我想知道框架是否使用深拷贝。例如,如果该类具有数组或对象属性,则它们是否使用复制参考或新分配的对象。非常感谢。
objective-c - 为什么 NSDictionary 的键必须符合 NSCopying
我注意到,对于一个对象来说,NSDictionary
它必须符合NSCopying
.
为什么会这样?我会理解所有键都必须实现hash
,但为什么NSCopying
呢?
objective-c - 要成为 NSDictionary 的键,一个类是否还必须实现 isEqual: 和 hash?
我知道一个类必须实现NSCopying
才能成为一个键NSDictionary
,但是实现isEqual:
并且hash
也是必要的或可取的?
如果是,为什么?
objective-c - 在 NSManagedObject 的子类中实现 NSCopying
我希望将子类NSManagedObject
作为NSDictionary
. 因此,我必须遵守NSCopying
并实施copyWithZone:
.
起初我虽然我必须做类似的事情:
但是,这会产生在我的数据库中插入新内容的副作用,这是我想避免的。
NSCopying
实施的最佳方式是NSManagedObject
什么?
ios - 创建 PFObject 的副本
我处于允许用户下载PFObject
并在本地修改它的情况,然后他们可以取消更改或点击完成,这将关闭编辑界面但尚未将更改上传到 Parse。他们需要在上一个屏幕上点击 Save 以一次将所有更改写入数据库。
问题是一旦PFObject
修改,如果不从数据库中重新获取,就无法将其恢复到之前的状态。但是我不能总是在每次点击取消时从数据库中重新获取数据,因为之前的状态可能还没有上传到 Parse(这是一个糟糕的用户体验,让他们等待丢弃仅存储在本地的更改)。
例如,假设用户点击编辑PFObject
,他们进行更改然后点击完成,然后再次点击它并进一步编辑对象,然后点击取消。在这种情况下,对象需要恢复到其先前的状态,但该状态尚未上传到 Parse。所以我不能从数据库中重新获取数据来恢复更改,否则它会覆盖他们第一次所做的更改。
为了解决这个问题,我只需获取PFObject
并存储它的副本。我称之为瞬态对象。我会有另一个存储真实对象的属性。用户将修改瞬态对象,当他们点击取消时,我只需将其nil
设置为数据库。这样我就可以确保在用户提交更改之前不会对真实对象进行更改。问题是,PFObject
不采用NSCopying
协议(不知道为什么),因此我无法创建PFObject
. 我对其所做的任何更改都会影响真实对象。
如何在不修改允许控制何时提交和稍后保存数据的应用程序设计的情况下解决此问题?有没有办法扩展PFObject
和采用NSCopying
,以前做过吗?
我确实考虑将对象的属性存储在字典中,并允许用户编辑它,然后在提交时将这些属性中的每一个设置在PFObject
. 这种解决方案的问题在于复杂的结构。在这个应用程序中,我允许用户修改包含多个PFObject
s 的多个数组。除了一个简单的PFObject
.
ios - 复制空数组有什么意义?
我正在阅读另一个程序员的代码,所以我发现了这个:
这是某种诡计吗?为什么他将 mutableCopy 用于不可变数组assets
?他为什么不像这样创建它:
?