Освободить скрытые объекты?

Пишу приложение на iOS. У меня есть основной класс и подкласс UIView с некоторыми полями UILabel.

Я хочу освободить память, когда объекты подкласса находятся за пределами экрана (я скрываю вид анимацией). Как я могу это сделать?

ViewController.h
#import "Histogram.h"
#import "HistogramDelegate.h"

{
UIScrollView *filtersScrollView;
UITapGestureRecognizer *tapGesture;
UISwipeGestureRecognizer *swipeGesture;
...some UILabels and other components.
Histogram *_Histogram;

}

@property (nonatomic, retain) Histogram *_Histogram;
... other properties
... some functions

@end


ViewController.m
-(void)viewDidLoad {
_Histogram = [[Histogram alloc] initWithFrame:...];
}
-(void)viewDidUnload // here i add nil value to objects, for ex. UIScrollView = nil.

-(void)someFunc {
 [_Histogram hideHistogram];
}

Histogram.h
//some objects/fields like UILabels, UISliders, UIViews


Histogram.m
some functions.
-(void)hideHistogram {

}

Как и где я могу освободить _Histogram и его объекты из памяти, когда они находятся вне экрана? Когда я выделяю и инициализирую _Histogram и когда я скрываю _Histogram, мое приложение работает медленнее.


person Tomasz Szulc    schedule 19.01.2012    source источник


Ответы (1)


Вопрос не очень ясен. В любом случае, если вы хотите спросить, как освободить свою память после того, как ваша гистограмма скрыта: тогда вам нужно сделать это после вызова [_histogram _hidden] call [_histogram release]; _histogram=nil; Также в функции dealloc вашего файла histogram.m вы должны освободить все элементы, которые вы инициализировали в этот класс. В противном случае освобождение объекта _histogram не помогло бы

person aqs    schedule 19.01.2012
comment
да, но когда я набираю [_Histogram release], у меня возникает ошибка: «выпуск» недоступен: недоступен в режиме автоматического подсчета ссылок: / - person Tomasz Szulc; 19.01.2012
comment
это потому, что вы используете автоматический подсчет ссылок, который по умолчанию включен в последней версии Xcode. Поэтому, если вам не нужна _histogram, просто сделайте ее нулевой. Таким образом, вы не имеете в виду его, и он будет автоматически выпущен. - person aqs; 20.01.2012
comment
когда я делаю _histogram = nil; приложение по-прежнему медленно. я использую библиотеку S7GraphView в гистограмме. Должен ли я сделать nil 3 массива в его методе? все функции S7GraphView инициализируются в гистограмме. может быть, это делает мое приложение медленным. - person Tomasz Szulc; 20.01.2012
comment
Я не знаком с библиотекой S&GraphView. Но я очень сомневаюсь, что это вызывает у вас медлительность. Если вы считаете, что пользовательский интерфейс медленный, это может быть связано с тем, как вы обрабатываете вещи в основном потоке. Использование дополнительной памяти никогда не замедлит работу вашего приложения. - person aqs; 20.01.2012
comment
я должен научиться использовать потоки, и я проверю это. Спасибо за помощь. - person Tomasz Szulc; 21.01.2012