如果一个app在iOS的UIPasteBoard中设置数据,是深拷贝还是浅拷贝?
问问题
438 次
2 回答
1
如果你问- (void)setData:(NSData *)data forPasteboardType:(NSString *)pasteboardType
比它肯定是一个深层副本。
如果您询问strings
, URL's
,Colors
它们也是深度复制的。
只是关于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 回答