0

使用するアプリケーションサポートディレクトリを取得するための非常に単純なコードスニペットがあります。問題は、それが機能しないことです!で値を取得しCFArrayRef(後でC ++アプリケーションでこのスニペットを使用するためCコードを使用したいため)、を使用して最初の文字列を取得しようとしますCFArrayGetValueAtIndex()。返さvoid*れたものchar*をCスタイルのキャストを使用してに変換し、を使用して出力しようとしましprintf()たが、何も出力されません!誰かが理由を説明できますか?私はドキュメントをオンラインで調べCFArrayて問題をグーグルで検索しようとしましたが、何も思いつきませんでした。どんな助けでも本当にありがたいです!

コード:

#include <Foundation/Foundation.h>
#include <typeinfo>

int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    CFArrayRef array = \
      (CFArrayRef)NSSearchPathForDirectoriesInDomains(
                        NSApplicationSupportDirectory, 
                        NSUserDirectory, 
                        YES);
    char* string = (char*)CFArrayGetValueAtIndex(array, 0);
    printf("string: %s\n", string);
    [pool drain];
}
4

1 に答える 1

2

なぜそれをに変換するのchar*ですか?結果の配列には、sではなくsNSSearchPathForDirectoriesInDomains()が含まれます。CFStringRefchar*

使ってみてくださいCFShow((CFTypeRef)CFArrayGetValueAtIndex(array, 0));

于 2012-07-12T19:57:26.440 に答える