iOS SDK具体解释之NSCopying协议
2023-09-27 14:23:28 时间
原创blog,转载请注明出处
http://blog.csdn.net/hello_hwc?viewmode=contents
欢迎关注我的iOS SDK具体解释专栏
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html
前言:NSCopy协议是对对象进行拷贝的协议。Copy后的对象和原对象是两个对象,要分开考虑其生命周期。Copy后的对象应当对原始对象不依赖,不影响。
使用NSCopy协议仅仅须要实现一个方法copyWithZone:
就可以
举例
OC
@interface MyModel:NSObject<NSCopying>
@property (copy,nonatomic)NSString * name;
@property (nonatomic)int age;
@end
@implementation MyModel
-(instancetype)copyWithZone:(NSZone *)zone{
MyModel * copyedModel = [[self.class allocWithZone:zone] init];
copyedModel->_name = self.name;
copyedModel->_age = self.age;
return copyedModel;
}
@end
使用
MyModel * model = [[MyModel alloc] init];
model.name = @"wenchen";
model.age = 24;
MyModel * copyedModel = [model copy];
然后在LLDB中能够查看对象地址,能够看到是两个独立的对象
(lldb) po copyedModel
<MyModel: 0x7f958971b690>
(lldb) po model
<MyModel: 0x7f958971b5b0>
Swift
class MyModel:NSObject,NSCopying{
func copyWithZone(zone: NSZone) -> AnyObject {
let copyedModel = self.dynamicType()
return copyedModel
}
required override init() {
}
简单測试
let model1 = MyModel()
let model2 = model1.copy()
(lldb) po model1
<SWTest.MyModel: 0x7fafe0476f40>
(lldb) po model2
<SWTest.MyModel: 0x7fafe0476ec0>
这里顺便提一下,怎样在Swift中声明一个OC中的copy 属性
@NSCopying var name:NSString?
使用关键字 @NSCopying
相关文章
- 【转】移除ios自带button样式
- IOS的MVC和MVVM模式简明介绍
- iOS 9的新的改变 iOS SDK Release Notes for iOS 9 说了些改变
- 《iOS组件与框架——iOS SDK高级特性剖析》——第2章,第2.1节示例应用
- 《iOS组件与框架——iOS SDK高级特性剖析》——第2章,第2.3节显示地图
- 《iOS组件与框架——iOS SDK高级特性剖析》——第2章,第2.6节地理围栏
- 《iOS组件与框架——iOS SDK高级特性剖析》——第2章,第2.8节小结
- 《iOS组件与框架——iOS SDK高级特性剖析》——第6章,第6.4节以编程方式选择媒体
- 《iOS组件与框架——iOS SDK高级特性剖析》——第6章,第6.5节小结
- 《iOS组件与框架——iOS SDK高级特性剖析》——第6章,第6.6节练习
- 《iOS组件与框架——iOS SDK高级特性剖析》——第8章,第8.1节示例应用
- 《iOS编程指南》——2.4节安装iOS SDK
- iOS的UILabel设置居上对齐,居中对齐,居下对齐
- SwiftUI iOS 精品照片组件之选择或拍照并支持照片剪裁Photo(教程含源码)
- SwiftUI iOS 精品项目之动物世界应用支持视频播放自定义Map Annotation(教程含源码)
- 集成支付宝钱包支付ios SDK的方法和经验
- 如何解决iOS通过pod集成扫码SDK打包后无法上传到App Store的问题?
- Unity3d与iOS交互开发—接入平台SDK必备技能
- 微软更新iOS版Office Lens文件扫描应用,新增沉浸式阅读器功能
- 知名黑客确认iOS 10.2越狱工具 基于Safari开发
- iOS开发-调整文字之间间距
- iOS开发 - 七鱼SDK3.7.0,20170525更新的SDK,存在SDWebImage冲突的大坑
- iOS - 视频开发