我将 NSOperation 子类化并实现了 main 方法。当我将它添加到 NSOperationQueue 时,它没有被调用。我将它与确实 有效但看不出问题所在的示例代码和示例项目进行了比较。请问有没有人遇到过这个问题,请问是什么原因造成的?
在疯狂地寻找问题之后,我决定从头开始,重建我的课程并在每一步测试它。在标题中,我将它声明为 NSOperation 的子类。在实现文件中,我实现了 main 并且只放了几行sleep(3)
:NSLog..;
. 都好。当我开始添加属性,甚至声明委托等时,每个步骤都有效。
最后,在主体部分,我将代码使用 NSDirectoryEnumerator。突然间,main 根本没有被调用。不仅如此,当我把那个代码拿出来时,它仍然不起作用!!我尝试重新启动 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