NSOutputStream의 하위 클래스를 작성하여 매우 간단한 기능을 수행하려고합니다. 스트림으로 보낸 총 바이트 수를 추적합니다. 그러나, 나는 함수의 인스턴스를 초기화하는 예기치 않은 문제로 실행됩니다. 내가 명시 적으로 생성자를 추가하려고했습니다NSOutputStream의 하위 클래스를 만드는 방법
-[TrackingOutputStream initToFileAtPath:append:]: unrecognized selector sent to instance 0x101a187e0
: 나는 다음과 같은 오류가
TrackingOutputStream *os = [[[TrackingOutputStream alloc] initToFileAtPath:@"/tmp/test" append:NO] autorelease];
:이 클래스를 초기화 할 때
#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
, 그러나 다음은 코드입니다 수퍼 클래스를 호출하는 클래스에 전달하지만, 차이를 만들지는 않습니다.
확실하지 않지만 NSOutputStream은 아마도 클래스 클러스터 일 것입니다. 다음은 클래스 클러스터 인 다른 클래스를 하위 클래스로 분류하는 예제입니다. http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html –