问题标签 [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.

0 投票
1 回答
80 浏览

objective-c - 为什么对具有自定义内存管理语义的集合使用免费桥接?

在书里

有效的 Objective-C 2.0:改进 iOS 和 OS X 程序的 52 种特定方法

有一个

第 49 条:对具有自定义内存管理语义的集合使用免费桥接

本章主要通过一个示例解决了在 NSDictionary 中复制键而保留值的问题,从而说明了免费桥接的重要性。

它说,我引用如下:

如果您想用作键的对象无法复制怎么办?

我的问题是,如果 Objective-C 中的所有对象都是从一开始就实现复制方法的 NSObject 的子类,那怎么会有无法复制的对象呢?是否有任何实际情况需要这种情况?

0 投票
2 回答
170 浏览

ios - 在“id”类型的对象上找不到读取字典元素的预期方法

我正在尝试将我的应用程序从 8 升级到 Xcode 9.3.1 并出现以下错误:

在“id<NSCopying>”类型的对象上找不到读取字典元素的预期方法

我的代码是:

谁能指出我正确的方向?我已将代码中的错误加粗。

0 投票
3 回答
312 浏览

arrays - 快速复制具有相同地址的对象

当我复制empObjtempObj它的内存地址时,它的内存地址发生了变化。我想防止这种情况发生吗?

0 投票
0 回答
32 浏览

objective-c - 属性“复制”属性的意外结果

我已经为自己的类实现了 NSCopying,当我将此类用作具有复制属性的属性时,我期望它应该使用[... copy] / [... copyWithZone:]方法。但它返回对同一对象的引用。但是,如果我对NSString使用copy属性,它会起作用,或者当我直接调用copy方法时。我的问题为什么copy属性不适用于支持 NSCopying 协议的自己的类?

输出:

预期输出:

0 投票
1 回答
39 浏览

swift - NSCopy GKGameModel 不能正确复制玩家对象

我正在尝试使用 swift NSCopy 对 GKGameModel 对象进行深层复制,包括所有玩家及其钱包参考(包含代表他们现金的整数)。

使用 Swift Playgrounds,我尝试将 100 美元归功于所有复制的玩家,但保留原始玩家对象不变。

但是,我注意到代码也会影响原始播放器对象。

概括地说,代码应该显示:

目标:

  • 复制游戏类、所有玩家及其链接的钱包类
  • 将 100 美元记入复制的玩家。
  • 原来的玩家应该还有$0

代码如下:

在我的输出中,我得到以下信息:

问题:

  • 播放器复制代码永远不会被击中
  • 钱包复制代码永远不会被击中
  • 记入的 100 美元会影响原件和副本。

如何确保我所做的任何更改仅针对复制的游戏对象,而不是原始对象?

感谢


更新:

我已经能够通过循环遍历所有播放器对象来强制复制,但我不相信这是最好的方法。

如果我将游戏类中的复制功能更改为:

这也让我可以复制所有玩家对象;播放器和钱包类中的 copy() 函数被击中。

0 投票
0 回答
154 浏览

objective-c - ID到 NSString

我有一些NSURL *url,我想得到它的 GenerationId:

现在我想generatonIdKey通过将其转换为NSNumberor来显示NSString

可能吗?如果是怎么办?

0 投票
1 回答
891 浏览

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。有人可以帮我理解为什么会这样吗?忽略它是否安全?在这种情况下谁有责任?

0 投票
1 回答
488 浏览

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]?

知道我哪里出错了吗?

0 投票
1 回答
1228 浏览

swift - 在 Swift 中同时实现 Codable 和 NSManagedObject

我正在为我的雇主开发一个订单处理应用程序,该应用程序最初旨在从 API 动态获取有关订单、产品和客户的所有数据。因此,所有对象以及处理这些对象的所有函数都在应用程序中以“按值传递”的期望进行交互,使用符合 Codable 的结构。

我现在必须缓存几乎所有这些对象。输入核心数据。

我不想为一个对象创建两个文件(一个作为 Codable 结构,另一个作为 NSManagedObject 类),然后试图弄清楚如何将一个文件转换为另一个文件。所以我想在同一个文件中实现两者......同时仍然能够以某种方式使用我的“按值传递”代码。

也许这是不可能的。

编辑

我正在寻找比从头开始重建所有数据结构更简单的东西。我知道我必须做一些改动才能使 Codable 结构与 NSManagedObject 类兼容。我想避免制作一个需要我手动输入每个属性的自定义初始化程序,因为它们有数百个。

0 投票
0 回答
28 浏览

objective-c - NSMutableDictionary 内容对象符合 NSCopying 协议

我在objective-c,macOS上。

我有一个这样声明的选项字典

现在需要使用包含选项的 copyWithZone 复制包含字典的对象。

我可以在字典上调用“复制”。但是我如何确保添加到字典中的每个对象(基本上可以是任何类型的对象)都符合 NSCopying 协议?

就像是

我可以在属性声明中添加一些东西(我还没有发现)还是我需要继承 NSDictionary (我很可能想要避免)

问候