我将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
答案 0 :(得分:1)
我也遇到过这种情况。像往常一样,我是:我没有初始化OperationQueue让操作继续运行。
答案 1 :(得分:0)
我刚才遇到了这个问题。 1)初始化OperationQueue 2)将您的操作添加到此队列 3)清理你的项目 4)运行