1

ディレクトリでファイル監視を行おうとしています。コードはアップルのドキュメントから取得しました。次のエラーで fseventstreamcreate 関数呼び出しでクラッシュします。

例外の種類: EXC_BAD_ACCESS (SIGSEGV)
例外コード: 0x0000000000000008 の KERN_INVALID_ADDRESS

私はObjective Cにかなり慣れていません(これがCコードであり、obj-cアプリの一部であることは知っていますが)、なぜこれがクラッシュするのか本当にわかりません。これについて何か助けていただければ幸いです。

void monitorCallback(
                 ConstFSEventStreamRef streamRef,
                 void *clientCallBackInfo,
                 size_t numEvents,
                 void *eventPaths,
                 const FSEventStreamEventFlags eventFlags[],
                 const FSEventStreamEventId eventIds[])
{
    int i;
    char **paths = (char**)eventPaths;

    // printf("Callback called\n");
    for (i=0; i<numEvents; i++) 
    {
        /* flags are unsigned long, IDs are uint64_t */
        printf("Change %llu in %s, flags %u\n", eventIds[i], paths[i], eventFlags[i]);
    }
}


- (void) monitorFolder
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSString * monitorFolder = [[NSUserDefaults standardUserDefaults] objectForKey:@"monitorFolder"];

    //Create stream to monitor for changes.
    CFArrayRef pathsToWatch = CFArrayCreate(NULL, (const void **)&monitorFolder, 1, NULL);
    FSEventStreamRef stream;
    CFAbsoluteTime latency = 3.0; /* Latency in seconds */

    /* Create the stream, passing in a callback */
    stream = FSEventStreamCreate(
        NULL,
        (FSEventStreamCallback)&monitorCallback,
        NULL,
        pathsToWatch,
        kFSEventStreamEventIdSinceNow,
        latency,
        kFSEventStreamCreateFlagNone );
    ...
}
4

0 に答える 0