我的問題很簡單。我想在iOS中擴展NSMutableData類並重寫NSMutableData中定義的一些方法。對於例如我想用我自己的包裝器實現覆蓋writeToFile函數。 可以做到這一點嗎?擴展NSMutableData類
我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];
}
當我嘗試使用TestNSMutableData在我的項目的一個像
TestNSMutableData myData;
myData = [TestNSMutableData alloc]init];
[myData writeToFile:path atomically:YES]
我得到一個錯誤如下所示
NSInvalidArgumentException - 原因'* - 僅爲抽象類定義的長度。定義 - [TestNSMutableData length]!
是否有可能重寫Native分類中定義的方法,例如: NSMutableData?
UPDATE 創建NSString類分類方法將writeToFile
我實現
-(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函數。
我想要的是在fil中編寫操縱字符串e而不是實際的字符串。
有沒有辦法從上面的函數調用NSString writeToFile方法。
問候,
Nirav
如果我添加一個類別,並且方法簽名是本機所具有的,那麼無論我在哪裏實例化TestNSMutableClass,它都會給我編譯錯誤(它表示你的意思是NSMutableClass) – Nirav
如果添加一個類別,那麼就沒有'TestNSMutableData', ?你不能(或不應該)重寫使用類別的方法,你將不得不添加一個具有不同簽名的方法。如果你真的需要重寫原始方法,我建議在自定義類中包裝'NSMutableData'並轉發除了被覆蓋的類之外的所有調用。或者,甚至更好,試圖以不同的方式解決您的主要問題。 – zoul
謝謝Zoul!我終於實現了它使用類別(我試圖手動創建而不是使用XCode)。再次感謝 !! – Nirav