李程站 发表于 2013-2-4 02:28:34

Objective-C 对象复制 简单实现

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 = newname;   
[*] ;   
[*] }
[*] }
[*] -(void) dealloc{   
[*] self.name = nil;   
[*] self.password = nil;   
[*] self.interest = nil;   
[*];}- (id)copyWithZone:(NSZone *)zone{   
[*]TestProperty *newObj = [[ allocWithZone:zone] init];   
[*]newObj.name = name;   
[*]newObj.password = password;   
[*]newObj.myInt = myInt;   
[*]//深复制NSMutableString *tmpStr = ;   
[*]newObj.interest = tmpStr;   
[*];      
[*]//浅复制//newObj.
[*]interestinterest = interest;   
[*]return newObj;
[*]}
[*]@end
小结:Objective-C 对象复制 简单实现的内容介绍完,希望本文对你有所帮助!
【编辑推荐】

[*]Objective-C中一些关键字 学好必知
[*]Objective-C基础教程 产生随机数、整形转字符型示例
[*]Objective-C建立UUID 教程
[*]详解Objective-C语法快速参考
[*]解析Objective-C中一些特殊数据类型
[*]Objective-C内存管理教程和原理剖析
[*]浅析Objective-C 中 Property 使用方法
页: [1]
查看完整版本: Objective-C 对象复制 简单实现