제 질문은 간단합니다. 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
카테고리를 추가하고 메소드 서명이 네이티브 인 경우 TestNSMutableClass를 인스턴스화 할 때 컴파일 오류가 발생합니다 (NSMutableClass를 의미합니까?) – Nirav
카테고리를 추가하면 올바른 'TestNSMutableData'가 없습니다. ? 범주를 사용하여 메서드를 재정의 할 수 없거나 무시해서는 안되며 다른 서명으로 메서드를 추가해야합니다. 원래 메소드를 오버라이드 할 필요가 있다면 커스텀 클래스에'NSMutableData'를 래핑하고 오버라이드 된 것을 제외하고 모든 호출을 전달하는 것이 좋습니다. 또는 다른 방법으로 주요 문제를 해결하기 위해 노력하십시오. – zoul
감사 Zoul !! 나는 Category (나는 Xcode를 사용하기보다는 수동으로 생성하려고 시도했다)를 사용하여 마침내 그것을 달성했다. 다시 한 번 감사드립니다! – Nirav