因为对象是引用类型,而不是值类型,所以如果将equals设置UIView为another UIView,则视图是同一对象。如果您修改了一个,那么您也将修改另一个。
UIView
我有一个有趣的情况,我想UIView在另一个视图中添加一个作为子视图,然后进行一些修改,这些修改不应影响原始视图UIView。如何制作的副本,以UIView确保可以将其添加为子视图而不是对原始视图的引用UIView?
请注意,我无法以与原始视图相同的方式来重新创建视图,我需要某种方法来创建给定任何UIView对象的副本。
您不能随意复制对象。只能NSCopying复制实现该协议的对象。
NSCopying
但是,有一种解决方法:由于UIViews可以序列化到磁盘(例如,从XIB加载),因此您可以使用NSKeyedArchiver并NSKeyedUnarchiver创建一个序列化的NSData描述视图,然后再次对其进行反序列化以获得一个独立但相同的对象。
NSKeyedArchiver
NSKeyedUnarchiver
NSData