我正在尝试编写 NSOutputStream 的子类来执行一个非常简单的功能 - 跟踪发送到流的字节总数。但是,我在初始化函数实例时遇到了意外问题。这是代码:
#import <Foundation/Foundation.h>
@interface TrackingOutputStream : NSOutputStream {
unsigned long long bytesWritten;
}
@property (readonly) unsigned long long bytesWritten;
@end
---------------------------
#import "TrackingOutputStream.h"
@implementation TrackingOutputStream
@synthesize bytesWritten;
- (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)length {
NSInteger written = [super write:buffer maxLength:length];
bytesWritten += written;
return written;
}
@end
但是,当我尝试初始化此类时:
TrackingOutputStream *os = [[[TrackingOutputStream alloc] initToFileAtPath:@"/tmp/test" append:NO] autorelease];
我收到以下错误:
-[TrackingOutputStream initToFileAtPath:append:]: unrecognized selector sent to instance 0x101a187e0
我尝试向调用 super 的类添加一个显式构造函数,但它没有任何区别(因为它不应该)。