Я создаю приложение с FTP-соединением, и я пытаюсь использовать приложение SimpleFTPSample в качестве примера. У меня включен ARC в моем приложении, хотя он не отключен в учебнике по примерам.Как правильно использовать CFURLCreateCopyAppendingPathComponent с поддержкой ARC?
Из-за использования ARC, я столкнулся с проблемой с follwing кодом:
url = [NSMakeCollectable (CFURLCreateCopyAppendingPathComponent
(NULL, (CFURLRef) url, (CFStringRef) self.dirNameText.text, true)
) autorelease];
1) после удаления NSMakeCollectable и autorelease:
url = (CFURLCreateCopyAppendingPathComponent
(NULL, (CFURLRef) url, (CFStringRef) self.dirNameText.text, true));
Теперь у меня есть три ARC ошибки литья : «Тип указателя Objective-C типа NSURL to C» «CFURLRef (...) требует мостового случая» и одной семантической проблемы: «Несовместимые типы указателей, назначающие« NSURL * __ strong »из« CF 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 нитью.
Если вы знаете, что мне не хватает, сообщите мне! Спасибо !!!
Rob, спасибо за ваш ответ! Фактически оба кода работают отлично. У меня была проблема с делегатом в моем коде, а self.dirName.text был нуль, поэтому он сломался. – jeroandris