gpt4 book ai didi

ios - FTP、Blackraccoon 内存泄漏

转载 作者:行者123 更新时间:2023-11-28 22:51:57 26 4
gpt4 key购买 nike

我正在使用 Blackraccoon FTP 客户端进行 FTP 操作,使用 ARC。但我的仪器出现泄漏。
但是这里的示例应用程序没有泄漏是我的代码

 BRRequestCreateDirectory  *createEventDir = [BRRequestCreateDirectory initWithDelegate:nil];
//NSString *EventCode = [[NSUserDefaults standardUserDefaults] stringForKey:kEventCodeKey];
createEventDir.path = @"/12341234";
createEventDir.hostname = @"media.example.com/httpdocs/events/";
createEventDir.username = @"badboy";
createEventDir.password = @"hai!";
createEventDir.tag = 103;
[createEventDir start];
createEventDir = nil;


来自 FTP 客户端的示例代码 Blackraccoon FTP client

enter image description here

仪器中出现泄漏,但我使用的是 ARC谁能帮我解决这个问题..

最佳答案

我移植并大量修改了 BlackRaccoon。它旨在使用委托(delegate)。换句话说,代表是必需的。

BRRequestCreateDirectory  *createEventDir = [BRRequestCreateDirectory      initWithDelegate:nil];
//NSString *EventCode = [[NSUserDefaults standardUserDefaults] stringForKey:kEventCodeKey];
createEventDir.path = @"/12341234";
createEventDir.hostname = @"media.example.com/httpdocs/events/";
createEventDir.username = @"badboy";
createEventDir.password = @"hai!";
createEventDir.tag = 103;
[createEventDir start];
createEventDir = nil;

不正确。它开始了很多事情,然后删除了对象—— Action 是未定义的。

相反,您需要我提供的代码中指示的内容(不会泄漏)。

首先,使用ftp的类需要有BRRequestDelegate来指明委托(delegate)协议(protocol)。

- (IBAction) createDirectory:(id)sender
{
//----- createEventDir must be a variable in your class...

createEventDir = [BRRequestCreateDirectory initWithDelegate: self];

createEventDir.path = @"/12341234;
createEventDir.hostname = @"media.example.com/httpdocs/events/";
createEventDir.username = @"badboy";
createEventDir.password = @"hai!";
[createEventDir start];

//----- createEventDir MUST NOT BE DELETED OR SET TO NIL HERE
}

然后你必须有两个代表(至少):

-(void) requestCompleted: (BRRequest *) request
{
//----- handle Create Directory
if (request == createEventDir)
{
NSLog(@"%@ completed!", request);
//----- everything is done, NOW you can set it to nil
createEventDir = nil;
}
}

-(void) requestFailed: (BRRequest *) request
{
if (request == createEventDir)
{
NSLog(@"%@", request.error.message);
//----- everything is done, NOW you can set it to nil
createEventDir = nil;
}
}

如果您回头看看我的测试代码,您就会明白事情是如何运作的。如果您仍有问题,请在 http://github.com/lloydsargent/BlackRaccoon 上发布问题

希望这能让您解决问题。

关于ios - FTP、Blackraccoon 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11772558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com