我正在使用一个名为 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,但我只是不明白在哪里或如何。
谢谢!