Я начал иметь дело с NSOperations и (как обычно с параллелизмом) наблюдаю странное поведение.
В моем классе у меня есть переменная экземпляра:
NSMutableArray *postResultsArray;
при нажатии одной кнопки в пользовательском интерфейсе я инициализирую массив:
postResultsArray = [NSMutableArray array];
и настройте операции (вместе с зависимостями).
В операциях я создаю пользовательский объект и пытаюсь добавить в массив:
PostResult *result = [[PostResult alloc] initWithServiceName:@"Sth" andResult:someResult];
[self.postResultsArray addObject:result];
и при добавлении я получаю:
- [CFArray retain]: сообщение отправлено на освобожденный экземпляр 0x3b40c30
, что странно, поскольку я нигде не освобождаю массив в своем коде (я сделал, но когда проблема начала появляться, я прокомментировал все операции освобождения, чтобы быть уверенным, что это не так). Я также имел @synchronized раздел, как показано ниже:
PostResult *result = [[PostResult alloc] initWithServiceName:@"Sth" andResult:someResult];
@synchronized (self.postResultsArray) {
[self.postResultsArray addObject:result];
}
но проблема была та же (однако ошибка была для синхронизированной операции).
Есть идеи, что я могу делать не так?