2012-04-15 48 views
1

我正在建立一个FTP连接的应用程序,我试图使用SimpleFTPSample应用程序作为示例。我在我的应用中启用了ARC,但在示例教程中未禁用它。除去NSMakeCollectable和自动释放后如何在启用ARC的情况下正确使用CFURLCreateCopyAppendingPathComponent?

url = [NSMakeCollectable (CFURLCreateCopyAppendingPathComponent 
(NULL, (CFURLRef) url, (CFStringRef) self.dirNameText.text, true) 
) autorelease]; 

1):

由于使用ARC,我遇到了一个问题,与follwing代码

url = (CFURLCreateCopyAppendingPathComponent 
(NULL, (CFURLRef) url, (CFStringRef) self.dirNameText.text, true)); 

现在我有三个ARC 转换错误 : “Objective-C指针类型NSURL到C指针类型'CFURLRef(...)需要桥接案例”和一个语义问题:“从'CF分配给'NSURL * __ strong'的不兼容指针类型URLRef'”。

由于Xcode的建议,我用__bridge的转换,但我仍然有决定性的错误之一,可与下面的代码的语义错误:

url = (CFURLCreateCopyAppendingPathComponent 
(NULL, (__bridge CFURLRef) url, 
(__bridge CFStringRef) self.dirNameText.text, true)); 

我一直在寻找一个解决方案,但可以没有找到一个确切的适合。我修改使用CFBridgingRelease在本tutorial看到我的代码:

url = CFBridgingRelease(CFURLCreateCopyAppendingPathComponent 
(NULL, (__bridge CFURLRef) url, 
(__bridge CFStringRef) self.dirNameText.text, true)); 

...但应用程序仍与EXC_BAD_ACCESS线断裂。

如果你知道我错过了什么,请告诉我! 谢谢!

回答

1

似乎并不需要使用Core Foundation。试试这个:

url = [url URLByAppendingPathComponent:self.dirNameText.text isDirectory:YES]; 
+0

Rob,感谢您的回复!事实上,这两个代码完美工作。我在我的代码中有一个委托问题,并且self.dirName.text是零,所以这就是它破裂的原因。 – jeroandris 2012-04-16 20:10:51

相关问题