2

NSOperation をサブクラス化し、main メソッドを実装しました。NSOperationQueue に追加したとき、呼び出されていませんでした。私はそれをサンプルコードとサンプルプロジェクトと比較しました が、問題が何であるかはわかりませんでした誰かがこの問題の経験があり、その原因は何ですか?

問題を見つけようと夢中になった後、最初からやり直して、クラスを再構築し、各ステップでテストすることにしました。ヘッダーで、NSOperation のサブクラスとして宣言しました。実装ファイルでは、main を実装し、次の 2 行だけを追加しましたsleep(3)NSLog..;. すべて良い。プロパティの追加、デリゲートの宣言な​​どを開始すると、各ステップが機能しました。

最後に、主に、NSDirectoryEnumerator を使用するコードを配置します。突然、メインがまったく呼び出されなくなりました。それだけでなく、そのコードを元に戻しても、まだ機能しません!! XCode 4 を再起動して、自分のマシンを再起動しようとしましたが (これらが役立つ理由はわかりませんが、アイデアが不足しています)、すべて役に立ちませんでした。

どんな手がかりでも大歓迎です。ありがとう。


更新: 私は (また!) ゼロからやり直しましたが、今回は別の順序でパーツを組み立てました...そして今では動作します! ただし、とにかく間違っていることがあり、今回は幸運だった場合に備えて、@Andrew が提案した @interface セクションを次に示します。

@class ScanOperation;

@protocol ScanOperationDelegate 
-(void)fileFound:(ScanOperation *)operation;
-(void)finishedScanOperation:(ScanOperation *)operation;
@end

#import <Foundation/Foundation.h>

@interface ScanOperation : NSOperation {
@private
    NSObject <ScanOperationDelegate> *delegate;
    NSURL *rootUrl;
    int totCount, dirCount, filCount, errCount;
    NSTimeInterval elapsed;
}
- (id)initWithScanRootUrl:(NSURL *)startAtUrl;

@property (readwrite, assign) NSObject <ScanOperationDelegate> *delegate;
@property (readonly) int totCount, dirCount, filCount, errCount;
@property (readonly) NSTimeInterval elapsed;
@end
4

2 に答える 2

1

私もこんなことがありました。いつものように、それは私でした。操作を実行するための OperationQueue を初期化していませんでした。

于 2012-01-10T22:08:20.327 に答える