2011-07-26 28 views
0

我已經子類NSOperation和 - (無效)主要是好的,(因爲它使用NSOperation之前工作),我也走過了初始化方法和變量被正確初始化。 後所有的艱難 - (ID)initWithSampleBuffer:做,我試圖將uploadOperation添加到NSOperationQueue:exc_bad_acccess在添加到NSOperationQueue時

UploadOperation *ulOp = [[UploadOperation alloc] initWithSampleBuffer:sampleBuffer]; 
[queue addOperation:ulOp]; //here i get exc_bad_access 
[ulOp release]; 

我得到EXC_BAD_ACCESS。我試過了斷點,我可以看到隊列存在,ulOp也是如此。 我搞不​​明白我做錯了什麼,因爲根據我的理解,exc_bad_access是在你試圖傳遞一個「消息」給已經被釋放的東西時發生的,顯然,它們都不是。

- (id)initWithSampleBuffer:(CMSampleBufferRef) aSampleBuffer { 
    sampleBuffer = aSampleBuffer; 

    VideoStreamViewController *vc = [VideoStreamViewController shared]; 
    ul = [[Uploader alloc] initWithURL:[NSURL alloc] filePath:@"" delegate:vc doneSelector:@selector(didFinishUpload:) errorSelector:@selector(uploadFailed:)]; 

    return self; 
} 

但是上傳的東西,不是問題(我已經刪除它,仍然得到相同的結果)。並從我可以在那裏沒有問題的CMSampleBuffer對象,它被初始化!

在.H

NSOperationQueue *queue; 
@property (nonatomic, retain) NSOperationQueue *queue; 
在.M

@synthesize queue; 
self.queue = [[NSOperationQueue alloc] init]; 
[queue setMaxConcurrentOperationCount:1]; 
+1

'initWithSampleBuffer:'初始化器是怎麼樣的? – Eimantas

+0

你有它。我不瘦,那裏有一個問題。我還添加了NSOperationQueue的初始化。 –

+1

'self'從哪裏來?你正在以錯誤的方式進行對象初始化。將'self = [super init]'添加爲初始化程序的第一行。另外從外觀上看,我建議你閱讀有關多線程編程和操作隊列的指南。 – Eimantas

回答

5

你不打電話[super init]您的構造函數中

隊列的初始化?

假設你是繼承NSOperation(或NSObject等),你可能應該!

+0

現在我覺得自己很愚蠢嗎? :D謝謝@deanWombourne! –

相關問題