exc_bad_acccess при добавлении в NSOperationQueue - PullRequest
0 голосов
/ 26 июля 2011

У меня есть подклассы NSOperation и - (void) main в порядке (так как он работал до использования NSOperation), я также прошел через метод init, и переменные инициализируются правильно.Все сложно после - (id) initWithSampleBuffer: сделано, и я пытаюсь добавить uploadOperation в 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, он инициализирован!

начало очереди:

в .ч .:

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

в .м:

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

1 Ответ

5 голосов
/ 26 июля 2011

Вы не вызываете [super init] внутри своего конструктора?

Предполагая, что вы создаете подкласс NSOperation (или NSObject и т. Д.), Вам, вероятно, следует!

...