1

私の質問は簡単です。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 メソッドを呼び出す方法はありますか。

よろしく、

ニラフ

4

1 に答える 1

1

NSMutableDataはおそらくクラス クラスターであり、サブクラス化が少し難しくなります。代わりに、カテゴリを使用してカスタム-writeToFileメソッドを追加してみませんか?

于 2012-09-11T07:29:07.507 に答える