我正在构建一个带有 FTP 连接的应用程序,并尝试使用SimpleFTPSample应用程序作为示例。我在我的应用程序中启用了 ARC,而在示例教程中没有禁用它。
由于使用 ARC,我遇到了以下代码的问题:
url = [NSMakeCollectable (CFURLCreateCopyAppendingPathComponent
(NULL, (CFURLRef) url, (CFStringRef) self.dirNameText.text, true)
) autorelease];
1)删除 NSMakeCollectable 和自动释放后:
url = (CFURLCreateCopyAppendingPathComponent
(NULL, (CFURLRef) url, (CFStringRef) self.dirNameText.text, true));
现在我有三个 ARC转换错误:“Objective-C 指针类型 NSURL 到 C 指针类型 'CFURLRef (...) 的情况需要一个桥接的情况”和一个语义问题:“分配给 'NSURL *__strong' 的不兼容指针类型'CFURLRef'”。
正如 Xcode 所建议的,我使用 __bridge 进行转换,但我仍然遇到以下代码的转换错误和语义错误之一:
url = (CFURLCreateCopyAppendingPathComponent
(NULL, (__bridge CFURLRef) url,
(__bridge CFStringRef) self.dirNameText.text, true));
我一直在寻找解决方案,但找不到完全合适的解决方案。我使用 CFBridgingRelease 修改了我的代码,如本教程中所示:
url = CFBridgingRelease(CFURLCreateCopyAppendingPathComponent
(NULL, (__bridge CFURLRef) url,
(__bridge CFStringRef) self.dirNameText.text, true));
...但该应用程序仍因 EXC_BAD_ACCESS 线程而中断。
如果你知道我错过了什么,请告诉我!谢谢!!!