Лучший сценарий, чтобы избежать утечек памяти на iOS - PullRequest
0 голосов
/ 02 августа 2011

Я создаю приложение, которое читает файлы rss, например Bing или Pulse, поэтому я создал класс (UIViewController), который показывает каждую отдельную запись в фиде, а также класс, содержащий этот список записей и другой класс, которыйпоказывает все каналы сразу, и я не использовал xib-файлы, поэтому я реализовал метод в каждом классе, который вызывается после каждого поворота, чтобы сбросить фреймы представлений внутри этого класса.Но я сталкиваюсь с проблемой в памяти, особенно когда вызываю этот метод, когда происходит вращение, зная, что он просто назначает CGRect каждому кадру в представлении.Поэтому не могли бы вы помочь мне избежать этой проблемы или предложить другой способ ее избежать, и я прав, когда не использую файлы XIB, или я должен использовать их, когда это возможно, и настроить вращение внутри них (используя маску автоматического изменения размера?).

И если есть какой-нибудь сложный бесплатный пример, подобный этим приложениям, может ли кто-нибудь обратиться к нему.

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

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

Во-первых, нет причин избегать перья файлов, когда они вам полезны. Они часто полезны. Нет причин использовать файлы пера, когда они вам не нужны. Если у вас сложный макет, они определенно очень полезны. Однако использовать их или нет - это личный выбор, основанный на конкретном приложении. Как новичок, я бы порекомендовал использовать их и освоиться с ними, и особенно полагаться на шаблоны Xcode для их правильной настройки.

Nib-файлы не являются вашей проблемой, так или иначе здесь. Вы теряете память, и вам нужно выяснить, почему. Сначала запустите статический анализатор, чтобы убедиться в отсутствии явных ошибок. Затем запустите ваше приложение в разделе «Инструменты (утечки)» и найдите большие утечки. Затем запустите свое приложение в разделе «Инструменты» («Распределения») и посмотрите, что потребляет больше всего памяти. Это должно указать вам на вашу ошибку.

Наиболее вероятная причина, без понимания вашего кода, заключается в том, что вы неправильно используете ivars. Убедитесь, что вы получаете доступ к своим иварам через аксессоры (кроме init, dealloc и аксессоров). Прямой доступ к вашим ivars является причиной проблем с памятью в iOS.

0 голосов
/ 02 августа 2011

Освободите объекты должным образом, которые были распределены и определены глобально. Не отпускайте объект вашего UIViewController, когда он активен. Большинство проблем утечки возникает при освобождении объекта UIViewController до того, как он выходит за пределы области видимости.

...