主要在我的NSOperation子类中没有被调用

时间:2011-05-23 19:49:30

标签: macos cocoa nsoperation nsoperationqueue

我将NSOperation子类化并实现了main方法。当我将它添加到NSOperationQueue时,它没有被调用。我将它与示例代码和的示例项目进行了比较 工作,看不出问题是什么。有没有人对这个问题有任何经验,是什么原因造成的呢?

疯狂地试图找到问题后,我决定从头开始重建我的课程并在每一步测试它。在标题中,我将其声明为NSOperation的子类。在实现文件中,我实现了main,只放了几行:sleep(3); NSLog..;。都好。当我开始添加属性,甚至声明委托等等时,每个步骤都有效。

最后,在主要的,我把代码使用NSDirectoryEnumerator。突然间,主要没有被召唤。不仅如此,当我把代码拿回来时,它仍然无效!我尝试重新启动XCode 4,重新启动我的机器(不是我知道为什么这些可能会有所帮助,但我的想法已经用完了)但是都无济于事。

任何线索都会非常感激。感谢。


更新:我从头开始(再次!),但这次我以不同的顺序组装零件......现在它可以工作了!但是,如果有什么事我做错了,这次我很幸运,这里是@interface部分@Andrew建议:

@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

2 个答案:

答案 0 :(得分:1)

我也遇到过这种情况。像往常一样,我是:我没有初始化OperationQueue让操作继续运行。

答案 1 :(得分:0)

我刚才遇到了这个问题。 1)初始化OperationQueue 2)将您的操作添加到此队列 3)清理你的项目 4)运行