У меня есть NSMutableArray, в котором я храню два объекта, но они заменяются на ноль в массиве через некоторое время.Почему это происходит?Объект массива все еще присутствует и показывает, что он содержит два объекта, но оба они равны nil.
Не означает ли тот факт, что они находятся в массиве, означают, что на них есть ссылки, и их не следует удалять?
Странно то, что объекты, которые я поместил в массив, не удаляются, так как на них ссылаются другие объекты, они просто заменяются на ноль в массиве.
-(void)addRender:(id)theRender
{
if (renderArray == nil)
renderArray = [NSMutableArray array];
// Leaving this function and for a while afterwords, the object is in the array.
// By afterwords, I think is until the autorelease pool is drained, but I can't
// be sure but the objects are there as I am stepping though code.
[renderArray addObject:theRender];
}
-(void)render
{
// By the time this is called, renderArray has 2 nil objects in it.
if (renderArray)
[renderArray makeObjectsPerformSelector:@selector(render)];
}
-(void)addRender
функция вызывается из функции init объектов.Я не знаю, имеет ли это значение, но самообладание уже установлено.
Сами объекты не удаляются, просто заменяются на ноль в массиве.Какое условие заставляет ARC сделать это?Я читал об обнулении слабых ссылок, что-то вроде этого, но я не объявляю что-либо слабой ссылкой, кроме того, объекты все еще вокруг и ссылочные места.
Я провел последние двачасы бьют мою голову от этого.