首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UIView可以复制吗?

UIView可以复制吗?
EN

Stack Overflow用户
提问于 2010-12-13 13:04:03
回答 4查看 47.6K关注 0票数 81

简单地使用这种方式:

代码语言:javascript
复制
UIView* view2 = [view1 copy]; // view1 existed

这将导致模拟器无法启动此应用程序。

试着保留,

代码语言:javascript
复制
UIView* view2 = [view1 retain]; // view1 existed
// modify view2 frame etc

view2的任何修改都将适用于view1,我理解view2view1共享相同的内存。

为什么UIView不能被复制?原因何在?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-15 21:54:19

你的应用程序可能会崩溃,如下所示:

代码语言:javascript
复制
 [UIView copyWithZone:]: unrecognized selector sent to instance 0x1c6280

原因是UIView没有实现复制协议,因此在UIView中没有copyWithZone选择器。

票数 33
EN

Stack Overflow用户

发布于 2012-12-07 10:33:29

这可能对你有用。存档视图,然后立即将其解压。这将为您提供视图的深层副本:

代码语言:javascript
复制
id copyOfView = 
[NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:originalView]];
票数 163
EN

Stack Overflow用户

发布于 2017-03-20 15:11:57

对于swift3.0.1:

代码语言:javascript
复制
extension UIView{
 func copyView() -> AnyObject{
    return NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: self))! as AnyObject
 }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4425939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档