iOS 개발 복제본 NSCoping 및 NSMutable Copying 프로토콜
NSCopiny
NSCopying
는 객체 복제본과 관련된 프로토콜입니다.하나의 클래스의 대상이 복사를 지원하려면, 이 클래스가 NSCopying
프로토콜을 준수하고 실현해야 한다.NSCopying
협의 중의 방법은 하나- (id)copyWithZone:(NSZone *)zone
뿐이다.우리의 클래스가 NSCopying
협의를 준수하고 클래스의 대상 호출copy
방법을 통과할 때copy
방법은 우리가 실현한 - (id)copyWithZone:(NSZone *)zone
방법을 호출하여 복사 기능을 실현한다.구현 코드는 다음과 같습니다.- (id)copyWithZone:(NSZone *)zone{
Person *model = [[[self class] allocWithZone:zone] init];
model.firstName = self.firstName;
model.lastName = self.lastName;
//
model->_nickName = _nickName;
return model;
}
설명:
- (id)copyWithZone:(NSZone *)zone
방법 중 [self class]
방법으로 되돌아오는 대상을 반드시 allocWithZone:
방법으로 호출해야 한다.지침이 실제적으로 가리키는 것은 Person
의 자류일 수 있기 때문이다. 예를 들어 Student
,Teacher
이다.이런 상황에서 호출[self class]
을 통해 정확한 클래스의 유형 대상을 되돌릴 수 있다.NSMutableCopying
NSCopying
프로토콜과 NSMutableCopying
의 차이는 주로 되돌아오는 대상이 가변 유형인지 여부에 있다.Foundation 프레임워크의 NSArray 예NSArray *nameArray = @[@"Jim", @"Tom", @"David"];
NSArray *copyArray = [nameArray copy];
NSMutableArray *mutableCopyArray = [nameArray mutableCopy];
[mutableCopyArray addObject:@"Sam"];
``NSArray
copy ,
copy
-(id)copyWithZone: (NSZone*)zone, , 。
NSArray
mutableCopy ,
mutableCopy
-(id)mutableCopyWithZone: (NSZone*)zone`로 가변 대상을 얻었다.따라서 사용자 정의 클래스가 변할 수 있는 것과 변할 수 없는 차이가 있다면 복사를 지원하려면
NSCopying
와 NSMutableCopying
를 동시에 실현해야 한다. - (id)copyWithZone:(NSZone *)zone
에서는 변할 수 없는 대상을 되돌려주고- (id)mutableCopyWithZone:(NSZone *)zone
에서는 변할 수 없는 대상을 되돌려준다.여러분의 적극적인 평론을 환영합니다. 우리 함께 기술을 토론합시다!!문장이 괜찮다고 생각되면 문장 아래의
를 클릭해 주세요!!당신의 지지는 저에게 가장 좋은 격려가 될 것입니다. 감사합니다!!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.