2011-05-23 33 views
2

我子類NSOperation並實現了主要方法。當我將它添加到NSOperationQueue中時,它沒有被調用。我將其與做的 的示例代碼和示例項目進行了比較,並且無法看到問題所在。有沒有人有任何這個問題的經驗,是什麼原因造成的?主要在我的NSOperation子類中不叫

經過瘋狂試圖找到問題後,我決定從頭開始,重建我的課堂,並在每一步測試它。在頭文件中,我將它聲明爲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 
+1

這將有助於看到@接口部分,以確保您的子類得當 – Andrew 2011-05-23 19:52:05

+0

我建回從頭開始,但這次以不同的順序,它的工作原理......但是,無論如何,如果有人注意到不正確的東西,我會粘貼@interface: – stifin 2011-05-23 21:17:24

+0

你的'NSOperation'子類是併發的嗎?只有在操作是** not ** concurrent時,纔會自動調用-main。 – 2011-05-23 21:24:39

回答

1

我過這種情況了。像往常一樣,它是我:我沒有初始化OperationQueue操作運行。

0

我剛纔遇到這個問題。 1)初始化OperationQueue 2)您的操作添加到此隊列 3)清理項目 4)運行

相關問題