2

ファイルを FTP サーバーにアップロードするために、BlackRaccoon というパッケージを使用しています。私は本当に基本的な委任の概念が理解できないことに本当に苦労しています。

私のアップロード クラス .m ファイルには、BlackRaccoon アップロード リクエストを呼び出すメソッドがあります。次のコードを使用します。

uploadFile = [BRRequestUpload initWithDelegate: self];

uploadFile.path = @"/filehere.txt";
uploadFile.hostname = @"xxx";
uploadFile.username = @"xxx";
uploadFile.password = @"xxx";

//we start the request
[uploadFile start];

そして、私の .h ファイルには次のものがあります。

@interface myClass : NSObject <BRRequestDelegate>
{
BRRequestCreateDirectory *createDir;
BRRequestDelete * deleteDir;
BRRequestListDirectory *listDir;

BRRequestUpload *uploadFile;

NSData *uploadData;

}

コンパイルして実行するたびに、次のような BlackRaccoon ファイルのどこかでエラーが発生します。

__25-[BRStreamInfo openRead:]_block_invoke [190行目] サーバーからの応答がありません。タイムアウト。

このエラーを発生させると、特に次のように、読み取りストリームを作成する方法に気付きます。

    request.didOpenStream = NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, timeout * NSEC_PER_SEC), dispatch_get_local_queue(), ^{
    if (!request.didOpenStream && request.error == nil)
    {
        InfoLog(@"No response from the server. Timeout.");
        request.error = [[BRRequestError alloc] init];
        request.error.errorCode = kBRFTPClientStreamTimedOut;
        [request.delegate requestFailed: request];
        [request.streamInfo close: request];
    }
});

私はこれに完全に失望しています。私たちのサーバーは稼働しており、Android デバイスや「FTP スプライト」などのアプリでタイムアウトの問題はありません。

問題はinitWithDelegateのものにあると確信しています。私は正しく委任しているとは思いませんが、その理由はわかりません。誰にもアイデアはありますか?どこかで (id)init が必要であることはわかっていますが、どこでどのように行うのかわかりません。

ありがとう!

4

2 に答える 2

0

BlackRaccoon Gitで uploadFile 関数を確認したところ、その例ではallocBRRequestUpload オブジェクトではなく、次のように呼び出していることがわかりました。

uploadFile = [BRRequestUpload initWithDelegate: self];

これがあなたのクラッシュの原因かもしれませんか?

于 2013-07-11T08:19:15.267 に答える