[注意:タイトルが正確でないかもしれません。フレーズに他の方法がわかりませんでした]NSFileHandleのreadInBackgroundが機能しないため、Mac OS XのFSEvents APIに関するCocoaラッパーのSCEventsを使用しました。私はすべてのSCEventsのものを扱う "EventListener"と呼ばれる別のクラスを持っています。SCEventsは一部の方法では機能しませんか?
それは、これらの方法があります:に続いて
- (void)setupEventlistener
{
SCEvents *events = [SCEvents sharedPathWatcher];
[events setDelegate:self];
NSMutableArray *paths = [NSMutableArray arrayWithObject:NSHomeDirectory()];
NSMutableArray *excludePaths = [NSMutableArray arrayWithObject:[NSHomeDirectory() stringByAppendingString:@"/Downloads"]];
[events setExcludedPaths:excludePaths];
[events startWatchingPaths:paths];
}
- (void)pathWatcher:(SCEvents *)pathWatcher eventOccurred:(SCEvent *)event
{
NSLog(@"%@", event);
}
(私はSCEvents例のアプリから直接これらのメソッドを持って、私はこの作業を取得後、私は自分自身の目的のためにそれを変更する予定)
を私はこれを持っている私のメインのアプリデリゲートクラスのapplicationDidFinishLaunchingメソッド:リスナーを初期化し
EventListener *events = [[EventListener alloc] init];
[events setupEventlistener];
。さて、それを割り当ててsetupEventListenerクラスを呼び出した後、すべて正常に動作します。ホームフォルダ内の変更は、デバッガコンソールに記録されます。 format:というシェルスクリプトを実行する別の方法があります。問題は、formatメソッドが実行されているときにイベントリスナーが動作しなくなることです。ホームフォルダへの変更は記録されません。この問題はformat:メソッドでのみ発生します。他のすべてのメソッドでは、イベントリスナーは正常に動作します。
問題の内容がわかりません。ありがとう
解決策はありますか? – indragie
はい:実行ループに戻ります。 –
申し訳ありませんが、私はそれが何を意味するのかよくわかりません(私は数ヶ月前にObject Oriented Programming、Cocoa、Objective-Cを始めました)。私はこのページを見つけました:http://www.cocoadev.com/index.pl?RunLoopそして今、私は実行ループが何であるか理解していますが、シェルスクリプトの起動後にどのように戻ってきますか?ありがとう – indragie