2010-04-02 4 views
7

내가 동일한 코드에 또 다른 문제가 생겼어요 ... 는이 오류 받고 있어요 ..."콘크리트 인스턴스 만들기!"

initialization method -initWithCharactersNoCopy:length:freeWhenDone: cannot be sent to an abstract object of class NSString_RegEx: Create a concrete instance!

을하지만 오류 또는 무엇을 어떻게해야 이해가 안

편집 :있는 NSString 클래스 클러스터 때문에

NSString *pageContent = [[NSString alloc] initWithData:pageContents encoding:NSASCIIStringEncoding]; 
NSString_RegEx *pContent = [[NSString_RegEx alloc] initWithString: pageContent]; 
+0

이 인스턴스를 할당 했습니까? –

+0

코드를 표시하십시오. –

답변

11

이를보고있다. 일반적인 설명은 애플의 문서 here을, NSString의 서브 클래 싱에 관한 노트는 here을 참고하십시오. 기본적으로 NSString은 문자를 저장하는 메서드가없는 추상 클래스이며 다양한 -initWith ... 메서드는 모두 초기화 메서드에 따라 NSString의 다른 구체적인 하위 클래스를 반환합니다. 일반적으로 NSString을 사용할 때 이것은 완전히 투명합니다. 그러나 NSString을 서브 클래스로 만들려면 최소한 기본 메서드 (-length 및 -characterAtIndex :)와 함께 원하는 모든 init 메서드를 구현해야합니다 (물론 분명히 문자열의 문자를 저장하는 방법이 있어야합니다).

NSString에 기능을 추가하려는 경우 서브 클래 싱은 일반적으로 필요하지 않습니다. 먼저, NSString에서 작동하는 범주 나 함수 또는 NSString이 포함 된 클래스의 메서드가 더 잘 작동하는지 확인해야합니다. 예를 들어 RegexKit 또는 Google Toolbox For Mac을 참조하십시오. 둘 다 NSString의 카테고리를 사용하는 정규 표현식 지원을 구현합니다.

+0

고마워요! 내 다른 문제가 해결되었습니다! (A) RegexKit 같은 것을 찾지 못했습니다 ... – dododedodonl

관련 문제