copy-mutableCopy

2365 단어
copy와mutableCopy 문법의 목적: 복사본을 바꿀 때 원본 대상에 영향을 주지 않는다.Copy를 호출하면 발생하는 대상은 변할 수 없습니다.mutable Copy를 호출하면 발생하는 대상은 변할 수 있으며, 호출 대상이 변할 수 있는지 여부와는 무관합니다.
Copy는 문자열, 배열, 사전 등 변경되지 않는 복사본을 만드는 NSCoppying 프로토콜을 먼저 실행해야 합니다.
mutable Copy는 가변 문자열, 가변 배열, 가변 사전 등 가변 복사본을 만드는 NSMutable Copying 프로토콜을 먼저 실행해야 합니다.
copy를 사용자 정의하려면 NSCopying을 준수하고 copyWithZone: 메소드를 구현해야 합니다.
mutable Copy를 사용자 정의하려면 NSMutable Copying을 준수하고 mutable Copy WithZone: 메서드를 구현해야 합니다.
1. 변하지 않는 문자열의mutableCopy(심도 복사)://심도 복사: 내용 복사, 새로운 대상 생성.새 객체 카운터는 1로 설정되고 소스 객체 카운터는 변경되지 않습니다.
NSString *string = [[NSString alloc] initWithFormat:@"age is %i", 10];
NSMutableString *str = [string mutableCopy]; //  , 1。 ; str string 。

2. 변하지 않는 문자열의copy(얕은 복사)://얕은 복사: 바늘 복사, 새로운 대상이 생기지 않습니다.소스 객체 카운터 +1.단 한 가지 상황은 간단한 복사입니다. 대상이 코피 방법을 호출할 때.
NSString *string = [[NSString alloc] initWithFormat:@"age is %i", 10];
NSString *str = [string copy]; // copy , , ,copy ;  +1;  ,copy retain.

3. 가변 문자열의 copy(딥 카피):
NSMutableString *string = [NSMutableString stringWithFormat:@"age is %i", 10];
NSString *str = [string copy]; //  ,str 1。

4. 가변 문자열의 Mutable Copy(딥 카피):
NSMutableString *string = [NSMutableString stringWithFormat:@"age is %i", 10];
NSMutableString *str = [string mutableCopy]; // ,str 1。

5. @property의 매개 변수 copy 정책:
@property (nonatomic, copy) NSString *name;
// copy set release 、copy 
////  :NSString copy , retain

6. 대상의copy:
Student *stu1 = [Student studentWithName:@"stu1"];
Student *stu2 = [stu1 copy];

좋은 웹페이지 즐겨찾기