copy 관련 지식 포인트

1097 단어

copy 관련 지식 포인트

  • copy와mutableCopy는 모두 사본을 만들지만, copy는 변하지 않는 사본을 만들고, mutableCopy는 변하지 않는 사본을 만든다
  • 딥 카피: 컨텐츠 카피, 2개의 객체로 변경되어도 다른 객체에는 영향을 미치지 않음
  • 얕은 복사: 바늘 복사, 하나의 대상, 인용 계수기 더하기, 그 중 하나를 바꾸면 다른
  • 에 영향을 미친다

  • 얕은 복제본은 NSString, NSArray, NSDictionary에서만 수행됩니다.
    사용자 정의 클래스로 copy,mutableCopy 작업 수행
  • 클래스 준수
  • 클래스에 상응하는 방법을 표시하는 방법
  • - (id)copyWithZone:(NSZone *)zone
    {
        // 1. 
        Person *p = [[[self class] allocWithZone:zone] init];
        
        // 2. 
        p.name = _name;
        
        // 3. 
        return p;
    }
    - (id)mutableCopyWithZone:(NSZone *)zone
    {
        // 1. 
        Person *p = [[[self class] allocWithZone:zone] init];
        
        // 2. 
        p.name = _name;
        
        // 3. 
        return p;
    }
    
  • 주의해야 할 점은 하위 클래스도copy,mutableCopy 조작을 실현해야 할 때
  • 부류가 협의를 준수하고 방법을 실현했기 때문에 부류에서 다시 쓰는 방법만 있으면 된다
  • - (id)copyWithZone:(NSZone *)zone
    {
        // 1. 
        id obj = [super copyWithZone:zone];
        // 2. 
        //  , 
        [obj setHeight:_height];
        
        // 3. 
        return obj;
    }
    

    좋은 웹페이지 즐겨찾기