Objective-C 对象复制 简单实现

移动开发 iOS
本文介绍的是Objective-C 对象复制 简单实现,以简单的代码实现简单的功能,那么我们来看内容。

Objective-C 对象复制 简单实现是本文要介绍的内容,也行对Objective-C 也不算陌生了,我们先来看内容。

Foundation系统对象(NSString,NSArray等)

只有遵守NSCopying 协议的类才可以发送copy消息

只有遵守 NSMutableCopying 协议的类才可以发送mutableCopy消息

copy和mutableCopy区别就是copy返回后的是不能修改的对象, 而mutableCopy返回后是可以修改的对象

这个两个方法复制的对象都需要手动释放。

自义定义Class

自义定Class也需要实现NSCopying协义或NSMutableCopying协议后,其对象才能提供copy功能。代码

  1. //TestProperty.h  
  2. #import <Cocoa/Cocoa.h> 
  3. @interface TestProperty : NSObject <NSCopying>{    
  4. NSString *name;  NSString *password;   
  5.  NSMutableString *interest;    
  6.  NSInteger myInt;}@property (retain,nonatomic)   
  7.  NSString *name,*password;  
  8.  @property (retain,nonatomic) NSMutableString *interest;  
  9.  @property NSInteger myInt;  
  10.  -(void) rename:(NSString *)newname;  
  11.  @end//TestProperty.m  
  12.  #import "TestProperty.h"  
  13.  @implementation TestProperty  
  14.  @synthesize name,password,interest;  
  15.  @synthesize myInt;  
  16.  -(void) rename:(NSString *)newname{    
  17.  // 这里可以直接写成    
  18.  // self.name = newname;    
  19.  //  if (name != newname) {      
  20.  [name autorelease];      
  21.  name = newname;     
  22.  [name retain];    
  23.  }  
  24.  }  
  25.  -(void) dealloc{    
  26.  self.name = nil;    
  27.  self.password = nil;    
  28.  self.interest = nil;   
  29.   [super dealloc];}- (id)copyWithZone:(NSZone *)zone{    
  30.   TestProperty *newObj = [[[self class] allocWithZone:zone] init];    
  31.   newObj.name = name;    
  32.   newObj.password = password;    
  33.   newObj.myInt = myInt;    
  34.   //深复制  NSMutableString *tmpStr = [interest mutableCopy];    
  35.   newObj.interest = tmpStr;    
  36.   [tmpStr release];      
  37.   //浅复制  //newObj.  
  38.   interestinterest = interest;    
  39.   return newObj;  
  40.   }  
  41.   @end 

小结:Objective-C 对象复制 简单实现的内容介绍完,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 博客园
相关推荐

2014-06-25 14:02:59

Objective-CKVO

2013-06-20 10:40:32

Objective-C实现截图

2011-08-11 16:01:03

Objective-C面向对象内存

2011-07-27 16:55:12

Objective-c 闭包

2011-08-17 11:05:22

Objective-C方法

2011-06-17 17:27:29

Objective-CCocoa苹果

2013-03-27 12:54:00

iOS开发Objective-C

2011-05-11 11:20:26

Objective-C

2011-05-11 15:58:34

Objective-C

2011-08-10 18:07:29

Objective-C反射

2013-08-21 13:26:43

Objective-CNSDate说明

2011-08-04 11:04:14

Objective-C 面向对象 继承

2011-08-04 13:32:21

Objective-C 方法 对象

2013-03-26 10:35:47

Objective-C单例实现

2011-08-04 09:35:09

Objective-C 编码规范

2014-04-30 10:16:04

Objective-CiOS语法

2011-08-17 10:58:59

Objective-C构造函数

2011-08-03 16:55:05

Objective-C 代理

2011-07-29 16:16:30

Objective-c block

2012-06-15 09:47:48

Objective-CCategory
点赞
收藏

51CTO技术栈公众号