У меня есть эта свойство mySegmented, заявил, как этотiphone - Сообщение отправлено высвобождены, например, в блоке
.h
@property (retain) UISegmentedControl *mySegmented;
.m
@synthesize mySegmented = _mySegmented;
тогда, она была создана, как это:
self.mySegmented = [self createSegmented];
// createSegmented creates an autoreleased segmented control
Мое приложение имеет 3 различных сегментированные элементы управления. Только один появляется в данный момент времени. В какой-то момент моего приложения мне нужно скрыть один сегментированный элемент управления, поэтому я создаю массив всех сегментированных элементов управления и итерации ... это внутри блока.
[UIView animateWithDuration:0.8
animations:^{
NSArray *list = [NSArray arrayWithObjects:
self.mySegmented1,
self.mySegmented2,
self.mySegmented3,
nil];
for (UISegmentedControl *oneSeg in list) {
[oneSeg setAlpha:0.0f];
}
}];
Что происходит: через некоторое время приложение вылетает при попытке построить этот массив. Я полагаю, что один из сегментированных элементов управления каким-то образом освобождается. Нет освобождения, которое я могу видеть в коде.
Мой вопрос: этот создаваемый массив автореализован. Что происходит, когда блок заканчивает анимацию? это релиз, отправленный каждому члену массива?
Если я сохраню сегментированный элемент управления после его создания, Xcode жалуется, что он просочится.
любые подсказки?
спасибо.
в моем dealloc У меня есть [_mySegmented1 release]; [_mySegmented2 release]; [_mySegmented3 release]; Как я могу его отпустить? [выпуск self.mySegmented1]; ?????????????? – SpaceDog
Привет, да, это хорошо выглядит при условии, что вы @synthesize mySegmented1 = _mySegmented1; 'в своей реализации. Это освободит эти объекты, когда контроллер View будет выпущен, теперь, когда вы получите свой объект, который хотите сделать 'self.mySegmented1 = [[self createSegmented] сохранить];' – Daniel
thank !!!!!!!!!!!! – SpaceDog