1

如果一个app在iOS的UIPasteBoard中设置数据,是深拷贝还是浅拷贝?

4

2 回答 2

1

如果你问- (void)setData:(NSData *)data forPasteboardType:(NSString *)pasteboardType比它肯定是一个深层副本。

如果您询问strings, URL'sColors它们也是深度复制的。

只是关于Images我很确定它使用相同CGImageRef,因为 UImage 没有实现NSCopying协议

您可以在关闭应用程序时对其进行测试,然后查看数据是否保留在粘贴板中。

于 2013-09-13T04:39:23.163 回答
0

UIPasteboard 使用 NSData 来存储数据。因此,它是深拷贝。

来自“setData:forPasteboardType:”的官方文档

“使用此方法将原始数据放在粘贴板上。例如,您可以存档模型对象的图形,并使用自定义粘贴板类型通过粘贴板将生成的 NSData 对象传递给相关应用程序。(放置对象 - 例如 NSString 、NSArray、NSDictionary、NSDate、NSNumber、UIImage 或 NSURL 对象——在粘贴板上,使用 setValue:forPasteboardType: 方法。)此方法为粘贴板中的第一个项目写入数据。调用此方法将替换粘贴板中当前的任何项目。”

于 2013-10-05T18:52:11.457 回答