Telegram Group & Telegram Channel
UILabel стоит больше, чем вы думаете

Мы склонны считать лейблы легкими с точки зрения использования памяти. В конце концов, они просто отображают текст.

UILabels на самом деле хранятся в виде растровых изображений, которые легко могут потреблять мегабайты памяти.

К счастью, реализация UILabel умна и потребляет только то, что ей нужно:

🔘 Если ваш лейбл монохромен, UILabel выберет CALayerContentsFormat из kCAContentsFormatGray8Uint (1 байт на пиксель).
Но на немонохромные лейблы, например, для отображения «😰пожалуйста, попытайтесь сохранить душевное спокойствие, насколько можете» или многоцветные NSAttributedString, потребуется использовать kCAContentsFormatRGBA8Uint (4 байта на пиксель).

Монохромный лейбл потребляет не более width * height * contentsScale ^2 * (1 byte per pixel), а немонохромный — в 4 раза больше: width * height * contentsScale ^2 * (4 byte per pixel).

🔘 Например, на iPhone 11 Pro Max лейбл размером 414 * 100 точек может потреблять до: 414 * 100 * 3 ^ 2 * 1 = 372,6 КБ, а немонохромный 414 * 100 * 3 ^ 2 * 4 = ~ 1,49 МБ.

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

В распространенном анти-паттерне лейблы ячеек UITableView/UICollectionView остаются заполненными их текстовым содержимым, когда эти ячейки попадают в reuse queue.

Весьма вероятно, что после повторного использования ячеек текстовое значение меток будет другим, поэтому их хранение расточительно.

✅️ Несложные советы, которые помогут освободить потенциально мегабайты памяти:

1️⃣ Обнуляйте текст лейблов, если вы сделаете их скрытыми и будете отображать только изредка.

2️⃣ Обнуляйте текст лейблов, если они отображаются в ячейках UITableView/UICollectionView, в didEndDisplaying:forItemAt:

📖 В этом материале есть ещё несколько советов, которые помогут вам улучшить производительность.

📖 А вот тут можно прочесть про изображения и пути оптимизации.

@iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/iosdev/617
Create:
Last Update:

UILabel стоит больше, чем вы думаете

Мы склонны считать лейблы легкими с точки зрения использования памяти. В конце концов, они просто отображают текст.

UILabels на самом деле хранятся в виде растровых изображений, которые легко могут потреблять мегабайты памяти.

К счастью, реализация UILabel умна и потребляет только то, что ей нужно:

🔘 Если ваш лейбл монохромен, UILabel выберет CALayerContentsFormat из kCAContentsFormatGray8Uint (1 байт на пиксель).
Но на немонохромные лейблы, например, для отображения «😰пожалуйста, попытайтесь сохранить душевное спокойствие, насколько можете» или многоцветные NSAttributedString, потребуется использовать kCAContentsFormatRGBA8Uint (4 байта на пиксель).

Монохромный лейбл потребляет не более width * height * contentsScale ^2 * (1 byte per pixel), а немонохромный — в 4 раза больше: width * height * contentsScale ^2 * (4 byte per pixel).

🔘 Например, на iPhone 11 Pro Max лейбл размером 414 * 100 точек может потреблять до: 414 * 100 * 3 ^ 2 * 1 = 372,6 КБ, а немонохромный 414 * 100 * 3 ^ 2 * 4 = ~ 1,49 МБ.

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

В распространенном анти-паттерне лейблы ячеек UITableView/UICollectionView остаются заполненными их текстовым содержимым, когда эти ячейки попадают в reuse queue.

Весьма вероятно, что после повторного использования ячеек текстовое значение меток будет другим, поэтому их хранение расточительно.

✅️ Несложные советы, которые помогут освободить потенциально мегабайты памяти:

1️⃣ Обнуляйте текст лейблов, если вы сделаете их скрытыми и будете отображать только изредка.

2️⃣ Обнуляйте текст лейблов, если они отображаются в ячейках UITableView/UICollectionView, в didEndDisplaying:forItemAt:

📖 В этом материале есть ещё несколько советов, которые помогут вам улучшить производительность.

📖 А вот тут можно прочесть про изображения и пути оптимизации.

@iOS Dev

BY iOS Dev


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/iosdev/617

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

Should You Buy Bitcoin?

In general, many financial experts support their clients’ desire to buy cryptocurrency, but they don’t recommend it unless clients express interest. “The biggest concern for us is if someone wants to invest in crypto and the investment they choose doesn’t do well, and then all of a sudden they can’t send their kids to college,” says Ian Harvey, a certified financial planner (CFP) in New York City. “Then it wasn’t worth the risk.” The speculative nature of cryptocurrency leads some planners to recommend it for clients’ “side” investments. “Some call it a Vegas account,” says Scott Hammel, a CFP in Dallas. “Let’s keep this away from our real long-term perspective, make sure it doesn’t become too large a portion of your portfolio.” In a very real sense, Bitcoin is like a single stock, and advisors wouldn’t recommend putting a sizable part of your portfolio into any one company. At most, planners suggest putting no more than 1% to 10% into Bitcoin if you’re passionate about it. “If it was one stock, you would never allocate any significant portion of your portfolio to it,” Hammel says.

Why Telegram?

Telegram has no known backdoors and, even though it is come in for criticism for using proprietary encryption methods instead of open-source ones, those have yet to be compromised. While no messaging app can guarantee a 100% impermeable defense against determined attackers, Telegram is vulnerabilities are few and either theoretical or based on spoof files fooling users into actively enabling an attack.

telegram from us


Telegram iOS Dev
FROM USA