六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 362|回复: 0

Objective-C 对象复制 简单实现

[复制链接]

升级  78.6%

856

主题

856

主题

856

主题

探花

Rank: 6Rank: 6

积分
2572
 楼主| 发表于 2013-2-4 02:28:34 | 显示全部楼层 |阅读模式
Objective-C 对象复制 简单实现是本文要介绍的内容,也行对Objective-C 也不算陌生了,我们先来看内容。
Foundation系统对象(NSString,NSArray等)
只有遵守NSCopying 协议的类才可以发送copy消息
只有遵守 NSMutableCopying 协议的类才可以发送mutableCopy消息
copy和mutableCopy区别就是copy返回后的是不能修改的对象, 而mutableCopy返回后是可以修改的对象
这个两个方法复制的对象都需要手动释放。
自义定义Class
自义定Class也需要实现NSCopying协义或NSMutableCopying协议后,其对象才能提供copy功能。代码

  • //TestProperty.h  
  • #import <Cocoa/Cocoa.h>
  • @interface TestProperty : NSObject <NSCopying>{   
  • NSString *name;  NSString *password;   
  • NSMutableString *interest;   
  • NSInteger myInt;}@property (retain,nonatomic)   
  • NSString *name,*password;  
  • @property (retain,nonatomic) NSMutableString *interest;  
  • @property NSInteger myInt;  
  • -(void) rename:(NSString *)newname;  
  • @end//TestProperty.m  
  • #import "TestProperty.h"  
  • @implementation TestProperty  
  • @synthesize name,password,interest;  
  • @synthesize myInt;  
  • -(void) rename:(NSString *)newname{   
  • // 这里可以直接写成   
  • // self.name = newname;   
  • //  if (name != newname) {      
  • [name autorelease];      
  • name = newname;     
  • [name retain];   
  • }  
  • }  
  • -(void) dealloc{   
  • self.name = nil;   
  • self.password = nil;   
  • self.interest = nil;   
  •   [super dealloc];}- (id)copyWithZone:(NSZone *)zone{   
  •   TestProperty *newObj = [[[self class] allocWithZone:zone] init];   
  •   newObj.name = name;   
  •   newObj.password = password;   
  •   newObj.myInt = myInt;   
  •   //深复制  NSMutableString *tmpStr = [interest mutableCopy];   
  •   newObj.interest = tmpStr;   
  •   [tmpStr release];      
  •   //浅复制  //newObj.  
  •   interestinterest = interest;   
  •   return newObj;  
  •   }  
  •   @end
小结:Objective-C 对象复制 简单实现的内容介绍完,希望本文对你有所帮助!
【编辑推荐】
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表