복제 방법

1401 단어
  • copy
  • 변경되지 않는 복제본 객체만 생성됩니다(예: NSString)
  • .
  • mutableCopy
  • 가변 복제본 객체만 생성됩니다(예: NSMutableString).
  • ios에서 모든 대상이copy,mutableCopy를 지원하는 것은 아니다. NSCopying 프로토콜을 준수하는 클래스는copy 메시지를 보낼 수 있고, NSMutableCopying 프로토콜을 준수하는 클래스는mutableCopy 메시지를 보낼 수 있다.
  • 파운드리 프레임워크에서 복제를 지원하는 대상은NSString、NSArray、NSNumber、NSDictionary、NSMutableString、NSMutableArray、NSMutableDictionary 등이다.
  • 상소 두 협의를 준수하지 않고 코피나mutable Copy를 보내면 이상이 발생합니다.그러나 기본적인ios류는 이 두 프로토콜을 준수하지 않았다.
  • copy를 사용자 정의하려면 NSCopying을 준수하고 copyWithZone을 실현해야 한다. 방법, mutableCopy를 사용자 정의하려면 NSMutableCopying을 준수하고 mutableCopyWithZone을 실현해야 한다. 방법.
  • @interface DBConfiguration : NSObject 
    /**      */
    @property (nonatomic, strong) NSArray *roomConfigure;
    /**      */
    @property (nonatomic, strong) NSArray *banquetCategory;
    /**      */
    @property (nonatomic, assign) NSInteger peopleNum;
    /**      */
    @property (nonatomic, strong) NSArray *shopConfigure;
    @end
    
    @implementation DBConfiguration
    - (id)copyWithZone:(NSZone *)zone
    {
        DBConfiguration *copy = [[DBConfiguration allocWithZone:zone] init];
        copy.roomConfigure = [self.roomConfigure copy];
        copy.banquetCategory = [self.banquetCategory copy];
        copy.peopleNum = self.peopleNum;
        copy.shopConfigure = [self.shopConfigure copy];
        return copy;
    }
    @end
    

    좋은 웹페이지 즐겨찾기