2012-04-15 80 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

相關問題