GData ObjCライブラリを使用して、iPhoneからYoutubeにビデオをアップロードしようとしています。
ライブラリを追加した後にプロジェクトをビルドしようとすると(ここにあります: svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/gdata-objectivec-client-read-only)、エラー-GDataServiceBase.mのクラス'GDataHTTPUploadFetcher'のインターフェイス定義が重複しています。
ただし、新しいプロジェクトで同じことを行った場合、問題はまったく発生しません。すべてのインポートとプロジェクト設定を確認しましたが、すべて同じです。
このような問題を解決するには、何を探す必要がありますか?
追加情報 :
(私はカテゴリーについて完全に確信が持てないので、コメントでティルの質問の1つに答えるために)
GDataHTTPUploadFetcher.hでは、次のようにインターフェイスが設定されています。
@interface GDataHTTPUploadFetcher : GDataHTTPFetcher {
GDataHTTPFetcher *chunkFetcher_;
BOOL needsManualProgress_
NSURL *locationURL_;
// uploadData_ or uploadFileHandle_ may be set, but not both
NSData *uploadData_;
NSFileHandle *uploadFileHandle_;
NSInteger uploadFileHandleLength_;
NSString *uploadMIMEType_;
NSUInteger chunkSize_;
BOOL isPaused_;
.
.
.
}
+ (GDataHTTPUploadFetcher *)uploadFetcherWithRequest:(NSURLRequest *)request
uploadData:(NSData *)data
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
+ (GDataHTTPUploadFetcher *)uploadFetcherWithRequest:(NSURLRequest *)request
uploadFileHandle:(NSFileHandle *)fileHandle
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
- (id)initWithRequest:(NSURLRequest *)request
uploadData:(NSData *)data
uploadFileHandle:(NSFileHandle *)fileHandle
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
- (void)pauseFetching;
- (void)resumeFetchingWithDelegate:(id)delegate;
- (BOOL)isPaused;
@end
GDataHTTPUploadFetcher.mでは、次のようにインターフェイスが設定されています。
@interface GDataHTTPUploadFetcher (InternalMethods)
- (void)uploadNextChunkWithOffset:(NSUInteger)offset;
- (void)uploadNextChunkWithOffset:(NSUInteger)offset
fetcherProperties:(NSDictionary *)props;
- (void)destroyChunkFetcher;
- (void)uploadFetcher:(GDataHTTPFetcher *)fetcher
didSendBytes:(NSInteger)bytesSent
totalBytesSent:(NSInteger)totalBytesSent
totalBytesExpectedToSend:(NSInteger)totalBytesExpected;
- (void)reportProgressManually;
- (NSUInteger)fullUploadLength;
// private methods of the superclass
- (void)invokeSentDataCallback:(SEL)sel
target:(id)target
didSendBodyData:(NSInteger)bytesWritten
totalBytesWritten:(NSInteger)totalBytesWritten
totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite;
- (void)invokeStatusCallback:(SEL)sel
target:(id)target
status:(NSInteger)status
data:(NSData *)data;
- (BOOL)invokeRetryCallback:(SEL)sel
target:(id)target
willRetry:(BOOL)willRetry
error:(NSError *)error;
@end
GDataServiceBase.mでは、次のようにインターフェイスが設定されます。
@interface GDataHTTPUploadFetcher : GDataHTTPFetcher
+ (GDataHTTPUploadFetcher *)uploadFetcherWithRequest:(NSURLRequest *)request
uploadData:(NSData *)data
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
+ (GDataHTTPUploadFetcher *)uploadFetcherWithRequest:(NSURLRequest *)request
uploadFileHandle:(NSFileHandle *)uploadFileHandle
uploadMIMEType:(NSString *)uploadMIMEType
chunkSize:(NSUInteger)chunkSize;
- (void)pauseFetching;
- (void)resumeFetchingWithDelegate:(id)delegate;
- (BOOL)isPaused;
@end
ただし、問題は、このコードが既存のプロジェクトの1つでのみ問題を引き起こし、新しいプロジェクトでは問題を引き起こさないことです。