当前位置: 首页 > news >正文

视频网站哪个做的好佛山顺德容桂做网站的公司

视频网站哪个做的好,佛山顺德容桂做网站的公司,路由器云安装wordpress,哪些网站可以做微信支付1.简单复制只能实现浅拷贝#xff1a;指针赋值#xff0c;使两个指针指向相同的一块内存空间#xff0c;操作不安全。 2. Foundation类已经遵守了NSCopying和 NSMutableCopying协议,即实现了copy和mutableCopy方法,因此Foundation对象可以使用这些方法创建对… 1.简单复制只能实现浅拷贝指针赋值使两个指针指向相同的一块内存空间操作不安全。 2. Foundation类已经遵守了NSCopying和 NSMutableCopying协议,即实现了copy和mutableCopy方法,因此Foundation对象可以使用这些方法创建对象的副本或可变副本 protocol NSCopying - (id)copyWithZone:(NSZone *)zone; end protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; end 3.用户自定义类遵守NSCopying协议和NSMutableCopying协议,则必须实现copyWithZone方法和mutableCopyWithZone方法否则该类对象无法响应copy和mutableCopy消息  4.实现copyWithZone方法例         -(id)copyWithZone:(NSZone *)zone {          Student *stu [[Student allocWithZone:zone]initWithName:self.name Age:self.age];          return stu; } 对应main函数中假设已经有一个Student对象stu1 则Student stu2 [stu1 copy]; 实现stu2是stu1的副本这里是深复制stu1和stu2分别对应不同内存。   5. 如果你的类产生了子类,那么copyWithZone:方法也将 被继承 Student *stu [[Student allocWithZone: zone] init];  该方法应该改为: Student *stu  [[[self class] allocWithZone: zone]init];  如果编写一个类的copyWithZone:方法那么子类的方法应该先调用父类的copy方法以复制继承来的copy实例变量. 1 NSCopying与NSMutableCopying协议 用copy方法能得到字符串的不可变副本而mutableCopy方法能得到字符串的可变副本。  但是如果对自定义的类我们不能直接使用copy和mutableCopy方法需要让类遵守NSCopying与NSMutableCopying协议然后实现继承自协议的copyWithZone:方法和mutableCopyWithZone:方法这两个方法返回的是对象本身得到一个对象的副本。 总之为了保证一个自定义的类的对象使用copy方法产生一个不可变的副本需要做两步  1. 让该类继承NSCopying协议。  2. 在类的代码实现部分重写继承自NSCopying协议的CopyWithZone:方法该方法返回一个该类的不可变对象副本。 为了保证一个自定义的类的对象使用mutableCopy方法产生一个可变的副本需要做两步  1. 让该类继承NSMutableCopying协议。  2. 在类的代码实现部分重写继承自NSMutableCopying协议的mutableCopyWithZone:方法该方法返回一个该类的可变对象副本。 2 深复制和浅复制 代码示例如下  GKHUser.h [code]#import Foundation/Foundation.h//继承NSCopying和NSMutableCopying协议 interface GKHUser : NSObject NSCopying, NSMutableCopying property (nonatomic, strong) NSMutableString *name;//类似retain类型引用计数 property (nonatomic, assign) int age; end GKHUser.m [code]#import GKHUser.himplementation GKHUser//重写copyWithZone:方法 - (id) copyWithZone:(NSZone *)zone {NSLog(执行copyWithZone:方法);//使用zone参数创建一个GKHUser对象GKHUser *user [[[self class] allocWithZone:zone] init];user.name self.name;//这里只是浅复制user.age self.age;return user; }//重写mutableCopyWithZone:方法 - (id) mutableCopyWithZone:(NSZone *)zone {NSLog(执行mutableCopyWithZone:方法);//使用zone参数创建一个GKHUser对象GKHUser *user [[[self class] allocWithZone:zone] init];user.name self.name;//这里只是浅复制user.age self.age;return user; } end main.m [code]#import Foundation/Foundation.h #import GKHUser.hint main(int argc, const char * argv[]) {autoreleasepool {GKHUser *user1 [GKHUser new];user1.name [NSMutableString stringWithString:李太];user1.age 10;GKHUser *user2 [user1 copy];//复制不可变副本[user1.name appendString:白];user2.age 20;NSLog(user1的名字为%, user1.name);NSLog(user1的年龄为%d, user1.age);NSLog(user2的名字为%, user2.name);NSLog(user2的年龄为%d, user2.age);GKHUser *user3 [GKHUser new];user3.name [NSMutableString stringWithString:张大];user3.age 30;GKHUser *user4 [user3 mutableCopy];//复制可变副本[user3.name appendString:彪];user4.age 40;NSLog(user3的名字为%, user3.name);NSLog(user3的年龄为%d, user3.age);NSLog(user4的名字为%, user4.name);NSLog(user4的年龄为%d, user4.age);}return 0; } 运行main.m结果 执行copyWithZone:方法  user1的名字为李太白  user1的年龄为10  user2的名字为李太白  user2的年龄为20  执行mutableCopyWithZone:方法  user3的名字为张大彪  user3的年龄为30  user4的名字为张大彪  user4的年龄为40 我们从结果中发现不管是可变复制还是不可变复制最后修改副本的name属性时候会导致原始对象的属性也发生修改为什么呢因为这里的copyWithZone:和mutableWithZone:方法中对name属性的赋值是浅复制如下图 为了达到我们的效果GKHUser.h和main.m代码不变而GKHUser.m修改如下  GKHUser.m [code]#import GKHUser.himplementation GKHUser//重写copyWithZone:方法 - (id) copyWithZone:(NSZone *)zone {NSLog(执行copyWithZone:方法);//使用zone参数创建一个GKHUser对象GKHUser *user [[[self class] allocWithZone:zone] init];user.name [self.name copy];//这里对name指向的对象执行深复制复制的副本为不可变的字符串user.age self.age;return user; }//重写mutableCopyWithZone:方法 - (id) mutableCopyWithZone:(NSZone *)zone {NSLog(执行mutableCopyWithZone:方法);//使用zone参数创建一个GKHUser对象GKHUser *user [[[self class] allocWithZone:zone] init];user.name [self.name mutableCopy];//这里对name指向的对象执行深复制复制的副本为可变的字符串user.age self.age;return user; } end 运行main.m结果 执行copyWithZone:方法  user1的名字为李太白  user1的年龄为10  user2的名字为李太  user2的年龄为20  执行mutableCopyWithZone:方法  user3的名字为张大彪  user3的年龄为30  user4的名字为张大  user4的年龄为40 这样就达到了我们的目的user2是user1的不可变副本实现了copy方法而user4是user3的可变副本实现了mutableCopy方法。  其在内存中的示意图如下
http://www.pierceye.com/news/47743/

相关文章:

  • 浙江高端网站建设朔州网站建设价格低
  • 佛山微信网站设计深圳线上注册公司
  • 上海网站制作平台高端展馆展厅设计方案
  • 简单建设网站国家批准做新闻的网站
  • 网站建设 合肥网站域名服务器查询
  • 触屏版手机网站开发个人网站设计目的
  • 网站添加邮件发送怎么做个人网站建设方案书用备案的
  • 网站我们的客户wordpress 3.4.2
  • 长春市网站建设永康营销型网站建设
  • 单位建设网站的目的如何做自己公司的网站
  • 网站开发搭建合同建立电子商务网站目的
  • 2017常用的网站新网站优化怎么做
  • 做网站个人外贸网站建设哪里好
  • 阿里巴巴外贸网站论坛制作网站的列子
  • 天津建设银行网站如何修改英文WordPress主题首页
  • 网站后台管理是什么21dove谁做的的网站
  • 网站建设最新签约全球十大网站访问量排名
  • 中国建设执业资格注册管理中心网站关键词权重如何打造
  • 厦门 网站建设 网站开发中信建设有限责任公司财务总监
  • 网站建设项目章程窝窝在线观看
  • 可信网站 认证规则宝塔怎么创建网站
  • 网站自助建站外贸开发产品网站建设
  • 织梦网站模板制作wordpress一键安装脚本
  • 网站开发 入门教程邯郸超速云_网站建设
  • 做外包软件的网站老五wordpress
  • WordPress实现网址导航宁波网站建设优化服务公司
  • 备案的网站名称国外网站引流如何做
  • 西安网站制作工程师辅助购卡网站怎么做
  • 一个网站做3个关键词够广告设计公司招聘
  • 公司网站php蛋糕电子商务网站建设方案