我正在尝试通过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
答案 0 :(得分:1)
我找到了解决我自己问题的解决方案。 我忘了在URL之前加上“ftp://”,这在调用时会出现 “CFWriteStreamCreateWithFTPURL”函数,不是搞砸了 由于URL无效而设置流。因此,设置了“流” 等于'nil',因为它没有正确设置。