저는 Objective-C로 수년간 프로그래밍을 해왔습니다. 항상이 문제에 부딪 힙니다. 여러 개의 초기화 프로그램이있는 객체가 있지만 모두 공통적 인 코드가있는 경우 , 당신은 어떻게 그것을 추출합니까?Objective-C 용 공통 초기화 클래스
@implementation Example
- (void)privateInitWithString:(NSString*)aString
{
self.str = aString;
}
- (id)init
{
self = [super initWithWindowNibName:@"MyNib"]
if(self) {
[self privateInitWithString:@""];
}
return self;
}
- (id)initWithString:(NSString*)aString
{
self = [super initWithWindowNibName:@"MyNib"]
if(self) {
[self privateInitWithString:aString];
}
return self;
}
@end
중복 많은 코드 냄새 개별 초기화에 있습니다 :
는내가 가지고 올 수 있었던 최선의이 같은 것입니다. 그러나 하나의 이니셜 라이저를 다른 하나에 "가져 오는"방법을 생각할 수 없습니다. 호출하기 전에 이 설정되어 있다는 보장이 없기 때문에 [super init]
이것이 가장 좋은 방법이 있습니까? ?
+1 기술적으로 정답, 당신은 * 여러 * 지정된 이니셜 라이저를 가질 수 시나리오 몇 가지가 있지만 예를 들어 클래스를 ''(또는 때로는 '')과 일치 시키면됩니다. –
그것은 완벽합니다! 다음은 페이지 하단의 "다중 이니셜 라이저 및 지정된 초기화 프로그램"섹션에 대한 링크입니다. https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/Initialization/Initialization.html# // apple_ref/doc/uid/TP40010810-CH6-SW3 – Paul