问题标签 [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.
objective-c - NSCopying 和 copyWithZone: - 他们应该返回 [self retain] 还是其他东西?
我很难理解 copyWithZone。
我知道它应该返回一个副本,但是如果我将一个对象添加到字典中,它会在字典中添加一个“copyWithZone”对象。如果我制作一个实际的副本(即一个新对象),那么添加到字典中的对象将不是同一个对象。但是,如果我只增加保留计数,那么从技术上讲它不是副本。
我应该保留自我还是制作实际副本?
objective-c - 关于复制 NSArray 的最后一个对象的问题
我有一个 MyObjects 的 NSArray。
我想复制数组的最后一个对象。换句话说,我想向数组中添加一个与上一个完全相同的新对象。
我试过:
但是我意识到我不能使用复制方法,因为它没有在 NSObject 中实现。
我是否应该在 MyObject 类中实现复制方法,返回 MyObject 的新实例并更改代码如下:
还是有其他解决方案?
更新 来自 NSObject 文档
NSObject 本身不支持 NSCopying 协议。子类必须支持该协议并实现 copyWithZone: 方法。copyWithZone: 方法的子类版本应该首先向 super 发送消息,以合并其实现,除非子类直接来自 NSObject。
objective-c - NSCopying、copyWithZone 和 NSDictionary
首先,我想确认我已经正确理解了 NSCopying ...
为了使用简单的 NSObject 子类作为 NSDictionary 中的键,我必须让它实现 NSCopying 协议。在复制的实例的 copyWithZone 方法中,我必须分配/初始化我的类的一个新实例,将其属性设置为与复制的实例相同并返回它。
其次,为什么 NSDictionary 使用添加到它的实例的副本而不是实例本身?
objective-c - 为什么在实施 NSCopying 时 zone 总是为零?
这可能是一个简单的问题,但为什么在我的课堂上实现 NSCopying 协议,我得到zone == nil
使用此方法调用带有对象的复制数组。
iphone - 保存 CoreData 结果数组,即使它从 CoreData 中删除
我想将记录保存在一个数组中并从 CoreData 中删除它们。我曾尝试使用 NSCopying,但似乎 copyWithZone 不适用于 NSManagedObject。我真的被卡住了,任何帮助将不胜感激。
objective-c - 在赋值中使用复制方法时未检查数据类型
我对复制有疑问
概述:
- 我有两节课
Car
,即MutableCar
- 这两个类都符合协议
NSCopying
- 该方法
copy
将返回一个实例Car
问题
为什么编译器不会为以下语句抛出任何编译错误?
MutableCar* c2 = [c1 copy];
编译器允许我将 Car* 分配给 MutableCar* 指针变量
有什么方法可以防止在编译时被忽视吗?
恕我直言,这可能会导致运行时崩溃,如下例所示。
代码(在单独的文件中)
注意事项- 使用自动引用计数 (ARC)
汽车.h
车
可变汽车
可变卡
测试.m
cocoa - copyWithZone: 中的“区域”是什么意思?
我正在浏览 Chung 的“Pro. Objective-C Design Patterns for iOS”,发现
_sharedSinglton = [[super allocWithZone: NULL] init];
我也查看了 Apple 的NSCopying文档,但无法真正理解 ZONE 的真正含义。
nsmutablearray - 无法将 NSMutableArray 复制到属性
我已经阅读了无数关于在这个站点和其他站点上复制数组的问题,但没有一个直接解决我遇到的问题。
我已经声明并合成了一个名为 arrXTurbulenceValues 的属性:
我在 ViewDidLoad() 方法中初始化数组:
一些处理发生在方法中,其中值存储到 NSMutableArray。在该处理结束时,我试图通过以下代码将 NSMutableArray 深度复制到 NSArray 属性中:
复制失败,self.arrXTurbulenceValues 仍然为零。我试图复制的 tempXvalues 数组中包含 1900 多个 NSString 对象。
我究竟做错了什么?我已经尝试在 ViewDidLoad() 中使用 & 不进行初始化的复制代码,并且我还尝试将属性配置为 NSArray 和 NSMutableArray。
NSString 是否响应 NSCopying?看来,如果我正确阅读了文档。
与 Objective C 耦合的 iOS 环境是一场噩梦。我从未见过如此挑剔的事情。啊。
iphone - 覆盖 copy 或 copyWithZone: 或两者兼而有之?
我对查看 Apple 的文档和阅读 Cocoa 设计模式感到困惑。在 Apple 文档中copyWithZone:
,它写道:
存在此方法,因此可以在需要符合 NSCopying 协议的对象的情况下使用类对象。例如,此方法允许您使用类对象作为 NSDictionary 对象的键。您不应覆盖此方法。
因为copy
它写道:
对于采用 NSCopying 协议的类来说,这是一种方便的方法。如果没有 copyWithZone: 的实现,则会引发异常。
NSObject 本身不支持 NSCopying 协议。子类必须支持该协议并实现 copyWithZone: 方法。copyWithZone: 方法的子类版本应该首先向 super 发送消息,以合并其实现,除非子类直接来自 NSObject。
在 Cocoa 设计模式中的示例中,它们会覆盖copyWithZone:
并且在符合协议时mutableCopyWithZone:
不会覆盖。如果我想在 an 中使用我的自定义子类作为键,我应该这样做吗? copy
NSCopying
NSDictionary
还是我覆盖copy
?
同样,如果我这样做[myClass copy]
,那是调用copyWithZone:
还是copy
我的自定义子类?谢谢。
objective-c - 如何继承 UIButton 以允许复制和编码以进行归档?
我有一个应用程序,我需要一直跟踪最后按下的按钮。所以我实现了这个方法:
然后,当按下任何按钮时,我会调用:
完美运行。但是现在我正在归档我的应用程序中的所有对象,当视图消失或关闭然后取消归档它并且 UIButton 不符合 NSCopying 或 NSCoding 时。我读过我可以继承 UIButton 并定义方法,但我被困在那里。
因此,当我的应用关闭或视图消失时,我想保存 lastButtonPressed。
我创建了一个名为 BIDPersistence 的新类来保存我的归档数据。在我的应用程序的视图控制器中,我有一个 saveData 方法来保存我的数据。我在下面显示的最后一行出现错误,因为 UIButton 不符合要求。
任何帮助表示赞赏。