私の質問は簡単です。iOS で NSMutableData クラスを拡張し、NSMutableData で定義されているいくつかのメソッドをオーバーライドしたいと考えています。たとえば、 writeToFile 関数を独自のラッパー実装でオーバーライドしたいとします。これを行うことは可能ですか?
私の 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];
}
私のプロジェクトの1つでTestNSMutableDataを使用しようとすると
TestNSMutableData myData;
myData = [TestNSMutableData alloc]init];
[myData writeToFile:path atomically:YES]
次のようなエラーが表示されます
NSInvalidArgumentException'- reason ' * - 抽象クラスに対してのみ定義された長さ。-[TestNSMutableData の長さ] を定義してください!
NSMutableData などの Native クラスで定義されたメソッドをオーバーライドすることはまったく可能ですか?
更新 writeTofile の NSString クラス カテゴリ メソッドを作成します
私の実装は
-(BOOL)writeToFile:(NSString*)path atomically:(BOOL)useAuxiliary encoding:(NSStringEncoding)enc error:(NSError**)error{
//Manipulating NSString
self = manipulatedString;
return [super writeToFile....];
}
「NSObject は 'writeToFile' 関数に応答しない可能性があります。NSString は NSObject から派生しており、NSObject には writeToFile 関数がないため、技術的には正しいです。」という警告が表示されます。
私が望むのは、実際の文字列ではなく、操作された文字列をファイルに書き込むことです。
上記の関数から NSString writeToFile メソッドを呼び出す方法はありますか。
よろしく、
ニラフ