问题标签 [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 - 为什么对具有自定义内存管理语义的集合使用免费桥接?
在书里
有效的 Objective-C 2.0:改进 iOS 和 OS X 程序的 52 种特定方法
有一个
第 49 条:对具有自定义内存管理语义的集合使用免费桥接
本章主要通过一个示例解决了在 NSDictionary 中复制键而保留值的问题,从而说明了免费桥接的重要性。
它说,我引用如下:
如果您想用作键的对象无法复制怎么办?
我的问题是,如果 Objective-C 中的所有对象都是从一开始就实现复制方法的 NSObject 的子类,那怎么会有无法复制的对象呢?是否有任何实际情况需要这种情况?
ios - 在“id”类型的对象上找不到读取字典元素的预期方法
我正在尝试将我的应用程序从 8 升级到 Xcode 9.3.1 并出现以下错误:
在“id<NSCopying>”类型的对象上找不到读取字典元素的预期方法
我的代码是:
谁能指出我正确的方向?我已将代码中的错误加粗。
arrays - 快速复制具有相同地址的对象
当我复制empObj
到tempObj
它的内存地址时,它的内存地址发生了变化。我想防止这种情况发生吗?
objective-c - 属性“复制”属性的意外结果
我已经为自己的类实现了 NSCopying,当我将此类用作具有复制属性的属性时,我期望它应该使用[... copy] / [... copyWithZone:]方法。但它返回对同一对象的引用。但是,如果我对NSString使用copy属性,它会起作用,或者当我直接调用copy方法时。我的问题为什么copy属性不适用于支持 NSCopying 协议的自己的类?
输出:
预期输出:
swift - NSCopy GKGameModel 不能正确复制玩家对象
我正在尝试使用 swift NSCopy 对 GKGameModel 对象进行深层复制,包括所有玩家及其钱包参考(包含代表他们现金的整数)。
使用 Swift Playgrounds,我尝试将 100 美元归功于所有复制的玩家,但保留原始玩家对象不变。
但是,我注意到代码也会影响原始播放器对象。
概括地说,代码应该显示:
目标:
- 复制游戏类、所有玩家及其链接的钱包类
- 将 100 美元记入复制的玩家。
- 原来的玩家应该还有$0
代码如下:
在我的输出中,我得到以下信息:
问题:
- 播放器复制代码永远不会被击中
- 钱包复制代码永远不会被击中
- 记入的 100 美元会影响原件和副本。
如何确保我所做的任何更改仅针对复制的游戏对象,而不是原始对象?
感谢
更新:
我已经能够通过循环遍历所有播放器对象来强制复制,但我不相信这是最好的方法。
如果我将游戏类中的复制功能更改为:
这也让我可以复制所有玩家对象;播放器和钱包类中的 copy() 函数被击中。
objective-c - ID到 NSString
我有一些NSURL *url
,我想得到它的 GenerationId:
现在我想generatonIdKey
通过将其转换为NSNumber
or来显示NSString
。
可能吗?如果是怎么办?
swift - 为什么在复制实例变量时出现“尝试注销未知的 __weak 变量”?
我今天在玩 NSOutlineView 和 NSTableHeaderCell 时注意到了这一点,但是当进行此特定配置时,会打印错误/警告(?):
objc [2774]:试图在 0x1016070d0 处注销未知的 __weak 变量。这可能是对 objc_storeWeak() 和 objc_loadWeak() 的错误使用。打破 objc_weak_error 进行调试。
这是片段:
如果我将 NSCell 替换为:NSEvent、NSImage、NSImageCell,也会发生这种情况
但这不会发生在 NSColor、NSDate、NSIndexPath
我在没有 Obj-C 知识的情况下开始学习 Swift。有人可以帮我理解为什么会这样吗?忽略它是否安全?在这种情况下谁有责任?
arrays - Swift 4 按值复制对象数组,其中包含数组
我试图了解该copy()
函数在 Swift 4 中是如何工作的。我有两个结构如下的类:
在我的程序中,我有一个项目数组,我想做的是通过以下方式创建数组中值的副本:
为此,我NSCopying
通过以下方式为这两个类实现了协议:
但是,当我运行代码和arrProjects.map { $0.copy() }
运行时,应用程序会冻结,就好像它正在循环一样,并且在该行Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffee5a61ff8)
抛出错误。let teamCopy = self.team?.map { $0.copy() } as! [Person]?
知道我哪里出错了吗?
swift - 在 Swift 中同时实现 Codable 和 NSManagedObject
我正在为我的雇主开发一个订单处理应用程序,该应用程序最初旨在从 API 动态获取有关订单、产品和客户的所有数据。因此,所有对象以及处理这些对象的所有函数都在应用程序中以“按值传递”的期望进行交互,使用符合 Codable 的结构。
我现在必须缓存几乎所有这些对象。输入核心数据。
我不想为一个对象创建两个文件(一个作为 Codable 结构,另一个作为 NSManagedObject 类),然后试图弄清楚如何将一个文件转换为另一个文件。所以我想在同一个文件中实现两者......同时仍然能够以某种方式使用我的“按值传递”代码。
也许这是不可能的。
编辑
我正在寻找比从头开始重建所有数据结构更简单的东西。我知道我必须做一些改动才能使 Codable 结构与 NSManagedObject 类兼容。我想避免制作一个需要我手动输入每个属性的自定义初始化程序,因为它们有数百个。
objective-c - NSMutableDictionary 内容对象符合 NSCopying 协议
我在objective-c,macOS上。
我有一个这样声明的选项字典
现在需要使用包含选项的 copyWithZone 复制包含字典的对象。
我可以在字典上调用“复制”。但是我如何确保添加到字典中的每个对象(基本上可以是任何类型的对象)都符合 NSCopying 协议?
就像是
我可以在属性声明中添加一些东西(我还没有发现)还是我需要继承 NSDictionary (我很可能想要避免)
问候
拍