2

我将 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
4

2 回答 2

1

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

于 2012-01-10T22:08:20.327 回答
0

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

于 2013-11-26T08:09:09.927 回答