OC 객체 복제에 대한 질문

2086 단어
먼저 실례를 들겠습니다.
Person 클래스를 만들려면 다음과 같이 하십시오.
Person.h:
#import <Foundation/Foundation.h>  @interface Person : NSObject<NSCopying>  @property(nonatomic,assign) int age; @property(nonatomic,retain) NSString *name;  @end 

Person.m:
#import "Person.h"  @implementation Person  - (id)init {     self = [super init];     if (self) {         self.name = @"xiaoming";         self.age = 22;     }     return self; } // , retain release, copy , release  -(id)copyWithZone:(NSZone *)zone {     Person *p = [[Person allocWithZone:zone] init];     p.name = self.name;  //     p.age = self.age;             //      //p.name = [self.name copy];//      return p; }  - (void)dealloc {     [_name release];     [super dealloc]; }  @end

main:
#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) {      @autoreleasepool {                  Person *p = [[Person alloc] init];         p.age = 11;         NSMutableString *str = [NSMutableString stringWithFormat:@"xiaohua"];         p.name = str;         NSLog(@"person age = %d name = %@",p.age,p.name);                  Person *p1 = [p copy];         [str appendString:@"1"]; // 1         NSLog(@"person age = %d name = %@",p.age,p.name); //          NSLog(@"p1 age = %d name = %@",p1.age,p1.name);  //                  [p1 release];         [p release];     }     return 0; }

간단한 복사 결과:
2013-08-05 11:35:39.688 개체 카피 [862:303] person age = 11 name = xiaohua
2013-08-05 11:35:39.690 개체 카피 [862:303] person age = 11 name = xiaohua1
2013-08-05 11:35:39.691 개체 복사 [862:303] p1 age = 11 name = xiaohua1 깊이 복사:
2013-08-05 11:39:26.579 개체 카피 [892:303] person age = 11 name = xiaohua
2013-08-05 11:39:26.581 개체 카피 [892:303] person age = 11 name = xiaohua1
2013-08-05 11:39:26.582 개체 카피 [892:303] p1 age = 11 name = xiaohua

좋은 웹페이지 즐겨찾기