2012-09-11 4 views
1

제 질문은 간단합니다. iOS에서 NSMutableData 클래스를 확장하고 NSMutableData에 정의 된 메서드 중 일부를 재정의하려고합니다. 예 : 내 자신의 래퍼 구현 writeToFile 함수를 재정의 할 싶어요. 가능합니까? 내가NSMutableData 클래스 확장하기

TestNSMutableData myData; 
myData = [TestNSMutableData alloc]init]; 
[myData writeToFile:path atomically:YES] 

처럼 내 프로젝트 중 하나에 TestNSMutableData를 사용하려고하면

내 TestNSMutableData.h

@interface TestNSMutableData : NSMutableData 
-(BOOL)writeToFile:(NSString*)path atomically:(BOOL)useAuxiliaryFile; 
@end 

내 TestNSMutableData.m

@implementation TestNSMutableData 
-(BOOL)writeToFile:(NSString*)path atomically:(BOOL)useAuxiliaryFile{ 
    //Some activity on the data and modifying it 
    return [self writeToFile:path atomically:useAuxiliaryFile]; 
} 

는 오류가 발생합니다 다음과 같이

NSInvalidArgumentException- 이유 '* - 길이가 추상 클래스에만 정의되었습니다. 정의 - [TestNSMutableData 길이]!

네이티브 클래스에 정의 된 메소드를 재정의 할 수 있습니까? NSMutableData?

UPDATE writeTofile

에 대한

내 구현

-(BOOL)writeToFile:(NSString*)path atomically:(BOOL)useAuxiliary encoding:(NSStringEncoding)enc error:(NSError**)error{ 


//Manipulating NSString 
    self = manipulatedString; 
    return [super writeToFile....]; 

} 

내가 경고 "NSObject의이 'writeToFile'기능에 응답하지 않을 수 있습니다를 얻을 수 있습니다 내가있는 NSString 클래스 분류 방법을 만들 수 있습니다. 기술적으로 정확 NSString은 NSObject에서 파생되었으며 NSObject에는 writeToFile 함수가 없습니다.

필자가 원하는 것은 파일에 조작 된 문자열을 쓰는 것입니다. 실제 문자열이 아닌.

위의 함수에서 NSString writeToFile 메서드를 호출하는 방법이 있습니까?

감사합니다,

Nirav

답변

1

NSMutableData는 조금 hard to subclass을, 아마 class cluster이다. 카테고리를 사용하여 대신 사용자 정의 -writeToFile 메소드를 추가하지 않으시겠습니까?

+0

카테고리를 추가하고 메소드 서명이 네이티브 인 경우 TestNSMutableClass를 인스턴스화 할 때 컴파일 오류가 발생합니다 (NSMutableClass를 의미합니까?) – Nirav

+0

카테고리를 추가하면 올바른 'TestNSMutableData'가 없습니다. ? 범주를 사용하여 메서드를 재정의 할 수 없거나 무시해서는 안되며 다른 서명으로 메서드를 추가해야합니다. 원래 메소드를 오버라이드 할 필요가 있다면 커스텀 클래스에'NSMutableData'를 래핑하고 오버라이드 된 것을 제외하고 모든 호출을 전달하는 것이 좋습니다. 또는 다른 방법으로 주요 문제를 해결하기 위해 노력하십시오. – zoul

+0

감사 Zoul !! 나는 Category (나는 Xcode를 사용하기보다는 수동으로 생성하려고 시도했다)를 사용하여 마침내 그것을 달성했다. 다시 한 번 감사드립니다! – Nirav

관련 문제