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