私は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];
'initWithSampleBuffer:'初期化子はどのように見えますか? – Eimantas
あなたはそれを持っています。私はそこに問題が薄いわけではない。また、私はNSOperationQueueの初期化を追加します。 –
「自己」はどこから来たのですか?あなたは間違った方法でオブジェクトの初期化を行っています。 'self = [super init]'をイニシャライザの先頭行に追加してください。また、見た目からは、マルチスレッドプログラミングと操作キューについてのガイドをお読みになることをお勧めします。 – Eimantas