【问题标题】:initWithDelegate issues - BlackraccooninitWithDelegate 问题 - Blackraccoon
【发布时间】:2013-07-11 08:09:52
【问题描述】:

我正在使用名为 BlackRaccoon 的软件包将文件上传到 FTP 服务器。我真的很难理解一个我无法弄清楚的非常基本的委托概念。

在我的上传类 .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 Sprite”)没有超时问题。

我很确定问题出在 initWithDelegate 的东西上。我只是不认为我委派正确,但我不知道为什么。有人有什么想法吗?我知道我在某个地方需要(id)init,但我只是不明白在哪里或如何。

谢谢!

【问题讨论】:

    标签: ios objective-c ftp blackraccoon


    【解决方案1】:

    刚刚检查了BlackRaccoonGit 的uploadFile 函数,我发现在他们的示例中,他们没有alloc BRRequestUpload 对象,而是这样称呼它:

    uploadFile = [BRRequestUpload initWithDelegate: self];
    

    这可能是您崩溃的原因吗?

    【讨论】:

    • 道歉 - 我的代码最初确实有这个,我收到了“选择器“initWithDelegate”的未知类方法。我昨晚换了,忘记了。问题是缺少已知的类方法。
    • 我不知道那个框架,但是没有allocinit 在我看来是完全错误的。
    • 错了。这是文档中的错字(已更正)。但是,示例代码是正确的。很抱歉造成混乱。
    • 我收到流连接超时服务器无响应请建议我
    【解决方案2】:

    请在BRRequest.m 文件中更改一行。

    - (id)initWithDelegate:(id&lt;BRRequestDelegate&gt;)aDelegate 函数中。 改变

    self.passiveMode = YES;
    

    self.passiveMode = NO;
    

    它会起作用的....

    这种改变对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多