Есть ли утечка в образце кода Scroll View Suite от Apple? - PullRequest
4 голосов
/ 22 марта 2011

Мне нужна помощь с кодом из Apple ScrollViewSuite ; в частности, я смотрю на класс ThumbImageView, в котором не определен метод dealloc. В .h я вижу, что свойство для imageName использует retain.

(Я не был уверен, разрешено ли мне публиковать какой-либо код, поскольку это Apple, поэтому, пожалуйста, дайте мне знать, если смогу / должен).

  1. Во всяком случае, я подумал, что если мы используем «сохранить», мы отвечаем за освобождение ссылки на объект.

  2. Метод CreateThumbScrollViewIfNeeded (из файла реализации RootViewController) имеет цикл for, который распределяет ThumbImageViews, устанавливает делегат, а затем после добавления просмотра в виде подпункта к просмотру прокрутки переходит к освобождению просмотра большого пальца. Если эти объекты фактически освобождаются, как делегат выполняет свою работу, уведомляя, когда изображение было нажато, прокручено и т. Д.

Извините, я просто так растерялся. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

4 голосов
/ 22 марта 2011

Код утечки. К сожалению, пример кода Apple обычно оставляет желать лучшего, дизайн часто отстой, и есть утечки и глюки. Лучше всего брать его только как аннотированный справочник по API, который показывает, как различные части API сочетаются друг с другом, не более того.

2 голосов
/ 22 марта 2011
  1. Вы несете ответственность за очистку ссылки на объект. Насколько я могу судить, этот код Apple пропустит , если этому свойству когда-либо будет присвоено значение.
  2. Любое представление сохраняет свои подпредставления. После того, как каждое представление было добавлено в представление прокрутки, класс, который его создает, больше не используется для него, поэтому он освобождает свою ссылку. Объект фактически не будет освобожден до тех пор, пока scrollview также не освободит свою ссылку, поэтому представления остаются "живыми" и могут сигнализировать своим делегатам, пока это не произойдет.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...