При добавлении объектов в массивы они получают счет сохранения?
Да.
Во второй функции я освобождаю локальную переменную«mySubview» или исходный объект?
UIView *mySubview;'
определяет локальную переменную mySubview
, которая является указателем на ссылку на экземпляр класса UIView
.В Objective-C не существует такого понятия, как «локальный объект» или «объект стека» (за исключением блоков, но это выходит за рамки этого вопроса).
Итак, нет, когда вы вызываете [mySubview release]
вы отправляете -release
на экземпляр UIView
, включенного в notification
.
То, что release
уравновешивает retain
, подразумеваемое alloc
.Что не совсем правильно.Вы должны сделать что-то вроде:
- (void)createSubview
{
UIView *mySubview = [[UIView alloc] init];
[self addSubview:mySubview];
[myArray addObject:mySubview];
[mySubview release];
}
-(void)eventHandler:(NSNotification *) notification
{
UIView *mySubview = [notification object];
[myArray removeObjectIdenticalTo:mySubview];
[mySubview removeFromSuperview];
}
О, под "свойством класса" я предполагаю, что вы имеете в виду "переменная экземпляра"?