Bezpieczeństwo nitek NSMutableArray

W mojej aplikacji uzyskuję dostęp i zmieniam zmienną tablicę z wielu wątków. Na początku zawieszał się, gdy próbowałem uzyskać dostęp do obiektu za pomocąobjectAtIndex, ponieważ indeks był poza zakresem (obiekt w tym indeksie został już usunięty z tablicy w innym wątku). Szukałem w Internecie, jak rozwiązać ten problem, i postanowiłem spróbowaćrozwiązanie Zrobiłem klasęNSMutableArray właściwość, patrz następujący kod:

@interface SynchronizedArray()
@property (retain, atomic) NSMutableArray *array;
@end

@implementation SynchronizedArray

- (id)init
{
    self = [super init];
    if (self)
    {
        _array = [[NSMutableArray alloc] init];
    }
    return self;
}

-(id)objectAtIndex:(NSUInteger)index
{
    @synchronized(_array)
    {
        return [_array objectAtIndex:index];
    }
}

-(void)removeObject:(id)object
{
    @synchronized(_array)
    {
        [_array removeObject:object];
    }
}

-(void)removeObjectAtIndex:(NSUInteger)index
{
    @synchronized(_array)
    {
        [_array removeObjectAtIndex:index];
    }
}

-(void)addObject:(id)object
{
    @synchronized(_array)
    {
        [_array addObject:object];
    }
}

- (NSUInteger)count
{
    @synchronized(_array)
    {
        return [_array count];
    }
}

-(void)removeAllObjects
{
    @synchronized(_array)
    {
        [_array removeAllObjects];
    }
}

-(id)copy
{
    @synchronized(_array)
    {
        return [_array copy];
    }
}

i używam tej klasy zamiast starej tablicy mutable, ale aplikacja nadal zawiesza się w tej linii:return [_array objectAtIndex:index]; Próbowałem również tego podejściaNSLock, ale bez szczęścia. Co robię źle i jak to naprawić?

questionAnswers(2)

yourAnswerToTheQuestion