1

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));

現在、3つのARCキャストエラーがあります:「Objective-Cポインタ型NSURLからCポインタ型へのケース'CFURLRef(...)にはブリッジケースが必要です」と1つのセマンティック問題:「互換性のないポインタ型が' 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スレッドで壊れていました。

私が欠けているものを知っているなら、私に知らせてください!ありがとう!!!

4

1 に答える 1

1

Core Foundation を使用する必要はまったくないようです。これを試して:

url = [url URLByAppendingPathComponent:self.dirNameText.text isDirectory:YES];
于 2012-04-16T03:25:09.987 に答える