Ist NSMutableArray von Objective-C threadsicher?

Ich habe fast eine Woche lang versucht, diesen Absturz zu beheben. Die Anwendung stürzt ohne Ausnahme oder Stack-Trace ab. Die Anwendung stürzt in keiner Weise ab, wenn sie im Zombie-Modus durch Instrumente läuft.

Ich habe eine Methode, die in einem anderen Thread aufgerufen wird. Die Lösung, die den Absturz behebt, wurde ersetzt

[self.mutableArray removeAllObjects];

mit

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

Ich dachte, es könnte ein Timing-Problem sein, also habe ich versucht, es zu synchronisieren, aber es stürzte immer noch ab:

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

Hier ist der Code

- (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
        }
    }
}

Ist dieses Problem mit NSMutableArray nicht threadsicher?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage