Настройки IBOutlets к нолю в dealloc

Python (2.6) - 430 312 302 персонажа

Третий вариант решения проблемы, еще есть возможности для улучшения. Количество символов по wc -m.

#coding:UTF8
k=""
for c in"*%s*"%raw_input():
 i=" $*.02468BDFHJLNPRTVXZ%+-/13579ACEGIKMOQSUWY".find(c)*2
 for j in"%05d%s"%tuple(map(ord,u"ಊҺ௖ூ௄Һ姢ҺЈҺӎϴЈϴӐϲ刦ҺҺ௄ϴ௄Ҽூ划ಊϴಊҺЈϴЈҼІ划ӎϴӎಊϴ௄ϴಌϲІ௖ூ௖ூҼ௖І刦ϴ勮ϲ刨ϲІҼӎҺ划௄勚ூ刔ூϲಌҺಊ划Ј勚І刔ІϲӐҺӎ姢ϴ媪ϲ姤ϲ"[i:i+2])):k+=["#"," ","###","   "][int(j)]
 k+=" "
exec"print k;"*8
8
задан 4thSpace 5 November 2009 в 17:06
поделиться

3 ответа

After a release, the pointer is essentially invalid and accessing it again may cause a crash. By setting a variable to nil after release you prevent that crash from happening. There's no harm in accessing a nil pointer.

The example you've linked to simply demonstrates why it's always a good idea to set a variable or ivar to nil after release, even when it looks like the variable/ivar won't be accessed again.

In the example, the anOutlet ivar is actually accessed by the superclass after your dealloc method, so if you don't set it to nil you will get a crash. Scenarios like that are very hard to spot just by looking at the code, so it's a good idea to nil every variable after release, even in dealloc.

12
ответ дан 5 December 2019 в 12:10
поделиться

Отправка сообщения освобожденному объекту вызывает сбой, отправка сообщения объекту nil игнорируется.

1
ответ дан 5 December 2019 в 12:10
поделиться

Иногда, когда одно свойство становится недопустимым (установлено в ноль), мы хотим сделать недействительными и другие свойства. Если класс аннулирует свойство с помощью self.property_name = nil, тогда будет отправлено сообщение о выпуске, которое вызовет сбой в dealloc, если мы уже вызвали выпуск для этого свойства. Если аннулирование происходит в суперклассе, то эта ошибка скрыта и довольно неприятна. Поэтому всякий раз, когда суперкласс может сделать свойство недействительным, может быть хорошей идеей установить для него значение nil, а не просто отключать.

0
ответ дан 5 December 2019 в 12:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: