【问题标题】:main in my NSOperation subclass not being called我的 NSOperation 子类中的 main 没有被调用
【发布时间】:2011-05-23 19:49:30
【问题描述】:

我继承了 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

【问题讨论】:

  • 查看@interface 部分以确保您正确地对其进行子类化会有所帮助
  • 我从头开始重新构建它,但这次以不同的顺序并且它可以工作......但是,无论如何我都会粘贴到@interface,以防有人注意到不正确的东西:跨度>
  • 您的NSOperation 子类是并发的吗?仅当操作并发时,-main 才会自动调用。
  • "non-cooncurrent" 意味着我已经编写了自定义子类,然后在 @implementation 块内实现了 - (void)main,对吗?如果是这样,那就是我所做的。令人费解的是,为什么在我进行一些更改之前调用了 main,然后,即使在我尝试撤消这些更改之后,它仍然没有被调用。现在它被调用了,因为我从最简单的实现开始(我的 main 只有 sleep(3); NSLog("I've finished"); 然后从那里开始
  • 我猜你的 -(void)main 方法签名可能不正确。请注意,它不是 (int)main() 与标准 C 程序的 main() 一样。 - 这是一个实例方法,返回 void,没有参数 -(void)main ...

标签: macos cocoa nsoperation nsoperationqueue


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多