Или, почему я не использовал retainCount
В летние каникулы
Это сообщение предназначено для запроса подробных рецензий о whys и wherefores этого печально известного метода retainCount
, чтобы консолидировать соответствующую информацию, плавающую вокруг SO. *
-
Основы: Каковы официальные причины не использовать
retainCount
? Есть ли вообще какая-либо ситуация, когда это может быть полезно? Что нужно сделать вместо этого? ** Не стесняйтесь перерабатывать. -
Исторический/пояснительный: Почему Apple предоставляет этот метод в
NSObject
протоколе, если он не предназначен для использования? Является ли код Apple полагаться наretainCount
для какой-то цели? Если да, то почему он не скрыт где-то? -
Для более глубокого понимания: каковы причины, по которым у объекта может быть другой показатель удержания, чем предполагается из кода пользователя? Можете ли вы привести какие-либо примеры *** стандартных процедур, которые могут использовать рамочный код, которые вызывают такую разницу? Существуют ли какие-либо известные случаи, когда количество удержаний всегда отличается от ожидаемого нового пользователя?
-
Что-нибудь еще, о чем вы думаете, стоит рассказать о
retainCount
?
<суб > *
Кодеры, которые новичок в Objective-C и Cocoa, часто сталкиваются или, по крайней мере, неправильно понимают схему подсчета ссылок. В пояснениях к учебнику могут указываться значения сохранения, которые (согласно этим объяснениям) поднимаются на один, когда вы вызываете retain
, alloc
, copy
и т.д., И вниз на один, когда вы вызываете release
(и на некоторых в будущем, когда вы вызываете autorelease
).
Отстойный Cocoa хакер, Крис, мог бы, таким образом, легко получить представление о том, что проверка количества удержания объекта будет полезна при решении некоторых проблем с памятью, и, следовательно, существует способ, доступный для каждого объекта называется retainCount
! Крис называет retainCount
на пару объектов, и эта слишком высокая, и эта слишком низкая, и что происходит? Итак, Крис делает сообщение на SO: "Что случилось с моим управлением памятью?" а затем рой <b> <big> буквы спускаются, говоря: "Не делай этого! Вы не можете полагаться на результаты". Это хорошо и хорошо, но наш бесстрашный кодер может захотеть более глубокого объяснения.
Я надеюсь, что это превратится в FAQ, страницу с хорошими информационными эссе/лекциями от любого из наших экспертов, которые склонны писать один, что новые Cocoa -heads могут указывать на то, когда они задаются вопросом о retainCount
.
Суб >
** Я не хочу делать это слишком широким, но здесь могут быть уместны конкретные советы по опыту или документы по проверке/отладке папок сохранения и выпуска.
*** В фиктивном коде; очевидно, что у широкой общественности нет доступа к фактическому коду Apple.