CFWriteStreamRef EXC_BAD_ACCESS问题? FTP

时间:2011-08-11 15:41:43

标签: ios4 memory-leaks ftp exc-bad-access assert

我正在尝试通过iPhone SDK连接到ftp服务器,这是我的错误代码(简化):

NSURL *serverURL;
NSString *serverUsername;
NSString *serverPassword;
CFURLRef serverURLRef;
CFStringRef serverPasswordRef;
CFStringRef serverUsernameRef;

serverURL = [[NSURL alloc] initWithString: @"XX.XX.XX.XX"];
serverURLRef = (__bridge CFURLRef) serverURL;

serverUsername = [[NSString alloc] initWithString: @"********"];
serverUsernameRef = (__bridge CFStringRef)serverUsername;

serverPassword = [[NSString alloc] initWithString: @"********"];
serverPasswordRef = (__bridge CFStringRef)serverPassword;


CFWriteStreamRef stream = CFWriteStreamCreateWithFTPURL(kCFAllocatorDefault, serverURLRef);
    CFWriteStreamSetProperty(stream, kCFStreamPropertyFTPUserName, serverUsernameRef);
    CFWriteStreamSetProperty(stream, kCFStreamPropertyFTPPassword, serverPasswordRef);
    CFWriteStreamSetProperty(stream, kCFStreamPropertyFTPUsePassiveMode, kCFBooleanFalse);

    CFWriteStreamOpen(stream);

我收到该行的“EXC_BAD_ACCESS”错误:     CFWriteStreamSetProperty(stream,kCFStreamPropertyFTPUserName,serverUsernameRef);

当我注释掉该行时,它会在下一行中出现相同的错误。我想这可能 与内存泄漏有关,但我并不确切地知道我哪里出错了。

提前致谢。

编辑:

我添加了一个断言,它似乎告诉我,即使声明了流,流也是零:     断言(!流=无);

断言失败了。

我尝试在Instruments中运行应用程序,它说“发现泄漏”,但没有列出它们: leaks in instruments http://i54.tinypic.com/1h47z6.png

1 个答案:

答案 0 :(得分:1)

我找到了解决我自己问题的解决方案。 我忘了在URL之前加上“ftp://”,这在调用时会出现 “CFWriteStreamCreateWithFTPURL”函数,不是搞砸了 由于URL无效而设置流。因此,设置了“流” 等于'nil',因为它没有正确设置。