[Swift 开发] 深拷贝一个UILabel
来源:互联网 发布:4*4 矩阵开关 编辑:程序博客网 时间:2024/06/06 00:31
深拷贝一个UILabel
原理还是用到runtime的反射机制和NSCopying协议.
extension UILabel:NSCopying{ public func copy(with zone: NSZone? = nil) -> Any { let label = UILabel() var outCount:UInt32 var propertyArray:[NSString] = [NSString]() outCount = 0 let peopers:UnsafeMutablePointer<objc_property_t?>! = class_copyPropertyList(UILabel.classForCoder(), &outCount) let count:Int = Int(outCount); for i in 0...(count - 1) { let method = peopers[i] let sel = method_getName(method) let methodName = sel_getName(sel) if let name = methodName { let na:NSString = NSString.init(utf8String: name)! propertyArray.append(na); } } // 不要忘记释放内存,否则C语言的指针很容易成野指针的 free(peopers) for i in 8...(count - 6) { let name = propertyArray[i] let value = self.value(forKey: name as String) label.setValue(value, forKey: name as String) } return label }}
调用
let labelA = UILabel()let labelB = labelA.copy() as! UILabel
同理也可以深拷贝其他类型
阅读全文
1 0
- [Swift 开发] 深拷贝一个UILabel
- Swift开发IOS-UILabel
- swift UILabel
- Swift UILabel
- swift UILabel
- swift UILabel
- swift/OC 深拷贝 浅拷贝
- 苹果开发之路--Swift之UILabel
- Swift UILabel的使用
- 【Swift-UIKit】UILabel
- Swift UILabel的使用
- swift UILabel小记
- swift之UILabel
- swift之UILabel
- Swift UILabel常用功能
- Swift UILabel换行问题
- swift UILabel常用功能
- Swift 一,UILabel详解
- Python编程中对于头部注释的要求
- assert断言
- bootstrap学习24---媒体对象
- 结构体在内存中的对齐规则
- MySQL SQL语句优化技巧
- [Swift 开发] 深拷贝一个UILabel
- java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
- dedecms-sql调用
- 如何成为一名优秀的新人
- 构造函数的使用
- dede标签
- SSL绕过https
- 读《分布式数据库架构及企业实践》---笔记四
- jquery根据table某一格的内容修改整行的css