一個可能的解決方案是繼承NSString
,並提供自己實現-fileSystemRepresentation
,可惜NSString
是一類集羣,從而子非常困難(這也是蘋果的文檔灰心)。
但是,我們可以創建一個單獨的類將設置爲NSString
,但它提供了自己的-fileSystemRepresentation
實現。
但是,如果NSTask
對參數對象的類標識做任何事情,這可能會產生問題。目前我沒有證據表明這種情況 - 這種解決方法似乎完美。
部首:
// MYTaskArgument.h
@interface MYTaskArgument : NSObject
+ (instancetype) taskArgumentWithString:(NSString *)str;
@end
實現:
// MYTaskArgument.m
@interface MYTaskArgument()
@property(copy) NSString *string;
@end
@implementation MYTaskArgument
+ (instancetype) taskArgumentWithString:(NSString *)str {
MYTaskArgument *ret = [[MYTaskArgument alloc] init];
ret.string = str;
return ret;
}
- (const char *) fileSystemRepresentation {
return self.string.UTF8String;
}
- (id) forwardingTargetForSelector:(SEL)aSelector {
return self.string;
}
@end