Анализатор XCode не работает
В настоящее время я делаю уроки CS193P через iTunesU, и учитель упомянул Build and Analyze
Вариант несколько раз. Он сказал, что это был хороший инструмент и с ним было весело играть.
Поэтому я попытался и заметил, что это не работает, или что я не понимаю, как это должно работать (я думаю, последний вариант).
У меня несколько утечек памяти, и это меня совсем не предупреждает! Я видел в Интернете, что должна появиться синяя вещь, говорящая мне, что это утечка, но я ничего не вижу, хотя я делаю NSDictionary *dict = [[NSDictionary alloc] init];
,
Как это должно работать? Из того, что я прочитал в Интернете, я подумал, что это должно сигнализировать о потенциальных утечках. Что я делаю неправильно?
Я использую XCode 3.2.5.
Благодарю.
Обновить:
Это своего рода ошибка, я думаю.
Когда я заявляю об этом в интерфейсе, как NSDictionary *dict;
и инициализировать его (но нигде не освобождая) ничего не говорит.
Когда я объявляю и инициализирую его в - (void) init
и не выпускайте это там как:
- (void) init {
if(self = [super init])
NSDictionary *dict = [[NSDictionary alloc] init];
return self;
}
Это сигнализирует об утечке. Зачем? Это из-за моих настроек? Это ошибка? Если это ошибка, где и как мне сообщить об этом?
2 ответа
Это дает вам предупреждение, потому что вы не освобождаете его.
-(void)dealloc{
[super dealloc];
[dict dealloc];
}
Это не предупреждает вас, потому что вы должны быть в состоянии освободить объекты, как только вы их создадите, и цель анализатора - предупредить вас о возможных утечках в вашем коде.
Вы можете использовать autorelease
или вы освобождаете объект, который создаете вручную.
PS, небольшое любопытство: почему вы используете Xcode 3.2.5?
Не знаю точно, может ли эта версия, но в последних версиях XCode, когда вы запускаете этот инструмент, вы можете видеть, ЧТО объект, который вы освобождаете, с помощью некоторых стрелок с объяснением, что-то вроде
Я только что узнал, что перезагрузка и перезапуск Xcode вернет его обратно.