NSMutableArray Objective C является потокобезопасным?

Я пытался исправить эту ошибку почти неделю. Приложение вылетает без каких-либо исключений или трассировки стека. Приложение не вылетает при работе с инструментами в режиме зомби.

У меня есть метод, который вызывается в другом потоке. Решение, которое исправило сбой, заменяло

[self.mutableArray removeAllObjects];

с

dispatch_async(dispatch_get_main_queue(), ^{
    [self.searchResult removeAllObjects];
});

Я подумал, что это может быть проблема с синхронизацией, поэтому я попытался синхронизировать ее, но она все еще не работала:

@synchronized(self)
{
    [self.searchResult removeAllObjects];
}

Вот код

- (void)populateItems
{
   // Cancel if already exists  
   [self.searchThread cancel];

   self.searchThread = [[NSThread alloc] initWithTarget:self
                                               selector:@selector(populateItemsinBackground)
                                                 object:nil];

    [self.searchThread start];
}


- (void)populateItemsinBackground
{
    @autoreleasepool
    {
        if ([[NSThread currentThread] isCancelled])
            [NSThread exit];

        [self.mutableArray removeAllObjects];

        // Populate data here into mutable array

        for (loop here)
        {
            if ([[NSThread currentThread] isCancelled])
                [NSThread exit];

            // Add items to mutableArray
        }
    }
}

Эта проблема с NSMutableArray не является потокобезопасным?

Ответы на вопрос(6)

Ваш ответ на вопрос