2011-07-26 12 views
0

私はNSOperationをサブクラス化しました。 - (void)mainはOKです(NSOperationを使用する前に動作していたので)。また、initメソッドを実行して変数を正しく初期化しました。 すべての後にタフ - (ID)initWithSampleBufferは:行われ、私はNSOperationQueueにuploadOperationを追加しようとしています:exc_bad_accessを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オブジェクトに何の問題もないので、初期化されます。キューの

のinit:.hの中

:.Mで

NSOperationQueue *queue; 
@property (nonatomic, retain) NSOperationQueue *queue; 

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

'initWithSampleBuffer:'初期化子はどのように見えますか? – Eimantas

+0

あなたはそれを持っています。私はそこに問題が薄いわけではない。また、私はNSOperationQueueの初期化を追加します。 –

+1

「自己」はどこから来たのですか?あなたは間違った方法でオブジェクトの初期化を行っています。 'self = [super init]'をイニシャライザの先頭行に追加してください。また、見た目からは、マルチスレッドプログラミングと操作キューについてのガイドをお読みになることをお勧めします。 – Eimantas

答えて

5

あなたはあなたのコンストラクタ内[super init]を呼び出していませんか?

NSOperation(またはNSObjectなど)をサブクラス化すると仮定すると、おそらくそうです!

+0

男は今私は愚かな気がするのですか? :Dありがとう@deanWombourne! –

関連する問題