2017-04-21 4 views
1

내가 상속 코드베이스 일하고을 다음과 같은 경고를 해결하기 위해 노력 :지정 초기화 경고 initWithCoder에서 다른 초기화 호출 할 때 :

전용 '슈퍼'

에 지정된 초기화를 호출해야

지정 초기화 슈퍼 클래스의 지정된 초기화에 '슈퍼'전화 누락 지정 초기화 코드는

입니다

:

,
- (id)initWithCoder:(NSCoder *)aDecoder { 
    self = [self initWithFrame:[CDCUtility getScreenBounds]]; //switching to super breaks 
    if (self) { 
    } 
    return self; 
} 

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self setArray:[NSMutableArray new]]; 
     [self setButtonArray:[NSMutableArray new]]; 
     _graphicEQ = [[CDCEffectsGraphicEQ alloc] initWithFrame:CGRectMake((1024/2) - (811/2), 60, 860, 255)]; 
     [self addSubview:_graphicEQ]; 
     [_graphicEQ setDelegate:self]; 
     [self addBypassButtonToView]; 
     [self addFlatButtonToView]; 
     [self addScrollView]; 
    } 
    return self; 
} 

그래서 나는 밖으로 만들 수있는의 개발자는 슈퍼 클래스 initWithCoder:이 (이것은 UIView입니다) 사용자 정의 UI 뷰를 생성하는 사용자 정의 인수를 사용하여이 initWithFrame: 매개 변수에로드하고, 전달 될 수 있도록 무효화한다.

나는 [self initWithFrame:]의 '[self initWithFrame:]'이 경고를 해결하지만 initWithCoder:에서 [super initWithFrame:]으로 변경되는 것을 보았지만보기를 올바르게로드하려면 여기에서 필요한 기능을 호출하지 않아도됩니다.

정상적으로 작동합니다. 가능한 모든 경고를 자르고 싶었 기 때문에이 문제를 해결하기 위해 변경이 가능한지 궁금한가요?

답변

1

이 시도 :

- (id)initWithCoder:(NSCoder *)aDecoder { 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     [self designatedInitializer]; 
    } 
    return self; 
} 

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self designatedInitializer]; 
    } 
    return self; 
} 

- (void) designatedInitializer { 
    [self setArray:[NSMutableArray new]]; 
    [self setButtonArray:[NSMutableArray new]]; 
    _graphicEQ = [[CDCEffectsGraphicEQ alloc] initWithFrame:CGRectMake((1024/2) - (811/2), 60, 860, 255)]; 
    [self addSubview:_graphicEQ]; 
    [_graphicEQ setDelegate:self]; 
    [self addBypassButtonToView]; 
    [self addFlatButtonToView]; 
    [self addScrollView]; 
} 
+0

부분적으로하지만 난 배경 색상과 다른 스타일, 왜 어떤 생각 같은 것들을 느슨하게 작품? 나는 슈퍼 클래스가 현재 프레임 요소를 설정하고 있다고 가정한다. – jcad

관련 문제