我已經子類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];
'initWithSampleBuffer:'初始化器是怎麼樣的? – Eimantas
你有它。我不瘦,那裏有一個問題。我還添加了NSOperationQueue的初始化。 –
'self'從哪裏來?你正在以錯誤的方式進行對象初始化。將'self = [super init]'添加爲初始化程序的第一行。另外從外觀上看,我建議你閱讀有關多線程編程和操作隊列的指南。 – Eimantas