EasySwift iOS🍏
2.99K subscribers
272 photos
8 videos
425 links
ВсС самоС интСрСсноС Π² ΠΌΠΈΡ€Π΅ iOS Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ πŸ§‘πŸ»β€πŸ’»

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ: @EasySwiftBot

По всСм вопросам ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ @itereznikov
Download Telegram
Overview on Accessibility Nutrition Labels for iOS development

ℹ️ На WWDC25 Apple прСдставила ΠΌΠ΅Ρ‚ΠΊΠΈ доступности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² App Store ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… функциях доступности ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

πŸ–₯ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΡΠ²ΠΈΡ‚ΡŒ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ VoiceOver, Voice Control, Dynamic Type, Dark Mode, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

πŸ”ˆ VoiceOver - это экранный Π΄ΠΈΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π°Π²ΠΈΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π±Π΅Π· Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°, трСбуя ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ€ΡƒΡ‡Π½ΠΎΠΉ настройки для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ‹Ρ‚Π°.

πŸ” ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Dynamic Type позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ тСкста Π½Π° устройствах iOS, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ тСкст Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ.

➑️ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° достаточной контрастности ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ с Π½ΠΈΠ·ΠΊΠΈΠΌ Π·Ρ€Π΅Π½ΠΈΠ΅ΠΌ; Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт Color Contrast Calculator Π² Xcode для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствия.

➑️ Π‘ΡƒΠ±Ρ‚ΠΈΡ‚Ρ€Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡΠΌΠΈ слуха, Π° аудиодСскрипции ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ устноС описаниС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡΠΌΠΈ зрСния.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘3
Inside Code Signing: Provisioning Profiles

Если Π²Π΄Ρ€ΡƒΠ³ Π²Ρ‹ Π½Π΅ Ρ‡ΠΈΡ‚Π°Π»ΠΈ Ρ‚Π΅Ρ… Π½ΠΎΡƒΡ‚Ρ‹ ΠΎΡ‚ apple, Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ зря. Π’Π°ΠΌ всС супСр ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описано ΠΈ Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ»ΠΎΡ‡ΠΊΠ°ΠΌ. 🧠

Π’ этом, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Provisioning Profiles ΠΈ Ρ‡Ρ‚ΠΎ Π·Π° Π½ΠΈΠΌΠΈ скрываСтся.

πŸ” ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ Provisioning ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡΡ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π²: ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊΠΈΠ΅ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ подписаны, Π³Π΄Π΅ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡Π΅Π½Ρ‹.

ℹ️ ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π° сайтС Apple Developer ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ подписаны криптографичСски. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ профиля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ инструмСнт codesign.

πŸ–₯ ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ прСдставляСт собой список свойств, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сСртификаты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния, список устройств ΠΈ Π΄Π°Ρ‚Ρƒ истСчСния срока дСйствия.

βš™οΈ Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ профиля, Ρ…Ρ€Π°Π½ΡΡ‰ΡƒΡŽΡΡ Π² свойствС DER-Encoded-Profile, Ρ‡Ρ‚ΠΎ являСтся Π½ΠΎΠ²Ρ‹ΠΌ источником ΠΏΡ€Π°Π²Π΄Ρ‹ для ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘4
Π§Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» Π’ΠΈΠΌ ΠšΡƒΠΊ ΠΊΡ€ΠΎΠΌΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π°ΠΉΡ„ΠΎΠ½Π°? Π£Π·Π½Π°Π΅ΠΌ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ VK ΠΈ Coffee&Code.

9 сСнтября встрСчаСмся Π² МосквС Π² офисС VK Π² АврорС. Π‘ΡƒΠ΄Π΅ΠΌ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² Π±ΠΈΠ½Π³ΠΎ, ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈ Ρ‡ΠΈΠ»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΏΠΊΠΎΡ€Π½ΠΎΠΌ ΠΈ чипсиками.

РСгистрация β€” Ρ‚ΡƒΡ‚. Π–Π΄Ρ‘ΠΌ вас!
❀4πŸ”₯3❀‍πŸ”₯1πŸ‘Ž1πŸ₯°1
Secret Management on iOS

πŸ™…β€β™‚οΈ Если ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π²Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ Π² исходном ΠΊΠΎΠ΄Π΅ - Ρƒ мСня для вас ΠΏΠ»ΠΎΡ…ΠΈΠ΅ новости: Ρ‚Π°ΠΊ Π½Π΅ стоит Π΄Π΅Π»Π°Ρ‚ΡŒ

⚠️ Π‘Π΅ΠΊΡ€Π΅Ρ‚Ρ‹ Π½Π΅ слСдуСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² исходном ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Xcode, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ доступны Π² скомпилированном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ВмСсто этого рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСрвСрноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅.

⚠️ ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ сСкрСтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠΉ бСзопасности.

❓ Π›ΡƒΡ‡ΡˆΠΈΠΉ способ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ сСкрСты β€” это Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. Если это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, слСдуСт Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования сСрвСрного хранСния ΠΈ обфускации для сниТСния рисков.

ℹ️ ИсслСдования ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ тысячи сСкрСтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ API-ΠΊΠ»ΡŽΡ‡ΠΈ, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ GitHub, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ бСзопасного управлСния сСкрСтами.

ΠŸΡƒΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈ Π½Π΅ новая, Π½ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘4
Π’Π·Π»ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Apple: ΡƒΡ€ΠΎΠΊΠΈ Π³Ρ€ΠΎΠΌΠΊΠΎΠΉ уязвимости для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

🚨 Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ PT-2025-34177 (CVE-2025-43300) Π² систСмном Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ ImageIO позволяСт Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· врСдоносныС изобраТСния, Ρ‡Ρ‚ΠΎ ставит ΠΏΠΎΠ΄ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ устройств Apple.

‼️ Атака ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π±Π΅Π· взаимодСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (zero-click), Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‘ особСнно опасной, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ использовалась Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ‚Π°ΠΊΠ°Ρ… Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… людСй.

πŸ”Ό ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ рСкомСндуСтся ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ свои устройства Π΄ΠΎ послСдних вСрсий iOS/Android для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ риска Π±Ρ‹Ρ‚ΡŒ Π°Ρ‚Π°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ открытия ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², особСнно Ссли ΠΎΠ½ΠΈ приходят ΠΊΠ°ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

❓ Для прСдотвращСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… уязвимостСй Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ процСссы бСзопасной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°Π·Π·ΠΈΠ½Π³ ΠΈ статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ рСвСрс-ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³Π°.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘5
Debugging Swift Concurrency: β€œAm I on the Main Actor?”

Π’ Swift 6 Π²Π°ΠΆΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½Π΅ ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, Π° ΠΎ Π°ΠΊΡ‚ΠΎΡ€Π°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок с доступом ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ интСрфСйсу ΠΈ тяТСлым вычислСниям.

⚠️ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ MainActor.assertIsolated() для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ выполняСтся Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ Π°ΠΊΡ‚Π΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ошибки Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

❓ МоТно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС Π°ΠΊΡ‚Π΅Ρ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ @globalActor, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ изоляции.

➑️ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² Xcode для понимания контСкста выполнСния Π°ΠΊΡ‚Π΅Ρ€ΠΎΠ² ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚑6
Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» UIViewController Π² 2025 Π³ΠΎΠ΄Ρƒ: Ρ‡Ρ‚ΠΎ измСнилось ΠΈ Ρ‡Ρ‚ΠΎ устарСло

πŸ” ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ viewDidUnload ΠΈ didReceiveMemoryWarning устарСли, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹Π΅ Ρ…ΡƒΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ viewIsAppearing ΠΈ viewSafeAreaInsetsDidChange, стали стандартом для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с UIViewController.

βŒ› ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» UIViewController Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ прСдставлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для управлСния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ измСнСниями окруТСния.

πŸ”— Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ управлСния Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ addChild ΠΈ removeFromParent, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ событий ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

➑️ РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ updateViewConstraints ΠΈ traitCollectionDidChange для Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ интСрфСйса ΠΊ измСнСниям окруТСния, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ смСна Ρ‚Π΅ΠΌΡ‹ ΠΈΠ»ΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ устройства.

➑️ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ для восстановлСния состояния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ encodeRestorableState ΠΈ decodeRestorableState, ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UserDefaults ΠΈΠ»ΠΈ CoreData для сохранСния Π΄Π°Π½Π½Ρ‹Ρ….
Please open Telegram to view this post
VIEW IN TELEGRAM
1πŸ‘6
Debug crashes in iOS using MetricKit

⚠️ MetricKit β€” это систСма для сбора ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΎ сбоях Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ систСмы, которая Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° Π² iOS 13, позволяя Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ сбои, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ инструмСнты Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

❓ Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с MetricKit Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² AppDelegate ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» MXMetricManagerSubscriber, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎ сбоях.

ℹ️ ΠžΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎ сбоях ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° handleCrashDiagnostics, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ сводки, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ сбоях.

πŸ” Для тСстирования Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ MetricKit ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сбои, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ массива ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ nil, ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ систСма Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° эти сбои.

class AppDelegate: UIResponder, UIApplicationDelegate, MXMetricManagerSubscriber {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Register as a subscriber to receive metrics and diagnostics
MXMetricManager.shared.add(self)
return true
}

// Implement the required delegate method for diagnostics
func didReceive(_ payloads: [MXDiagnosticPayload]) {
// Process crash reports
for payload in payloads {
if let crashDiagnostics = payload.crashDiagnostics {
handleCrashDiagnostics(crashDiagnostics)
}
}
}

func applicationWillTerminate(_ application: UIApplication) {
// Unsubscribe when the app terminates
MXMetricManager.shared.remove(self)
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
⚑2πŸ‘1
ARC Π² Swift

πŸŽ‰ ВсСх с ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΌ Π”Π½Π΅ΠΌ программиста! И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ основы - принСс ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ подсчСта ссылок.

❓ ARC (Automatic Reference Counting) - это ΠΌΠ΅Ρ‚ΠΎΠ΄ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Swift, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски отслСТиваСт количСство ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ освобоТдаСт ΠΈΡ…, ΠΊΠΎΠ³Π΄Π° счётчик достигаСт нуля.

⚠️ Π¦ΠΈΠΊΠ»Ρ‹ ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… ссылок (retain cycles) ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ARC ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ°ΠΌ памяти.

πŸ”— Weak ссылки Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ARC ΠΏΡ€ΠΈ подсчётС ссылок, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ retain cycles, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ unowned ссылки Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ становятся nil, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΡ€Π°ΡˆΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

βš™οΈ ARC Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ SIL (Swift Intermediate Language), Π³Π΄Π΅ компилятор автоматичСски добавляСт инструкции подсчёта ссылок, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ чистым ΠΈ бСзопасным.

βœ”οΈ АвтоматичСский подсчСт ссылок ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, избавляя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ нСобходимости Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ссылками, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ понятным.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯6❀2πŸ‘2
Swift 6.2 Released

⚑️ Swift 6.2 Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° 15 сСнтября. ΠšΡ€Π°Ρ‚ΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ.

❓ Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠ΅ написаниС бСзопасного ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΎΠ²Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ @concurrent, ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

πŸ”’ Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ‚ΠΈΠΏΡ‹ InlineArray ΠΈ Span, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ бСзопасный доступ ΠΊ памяти ΠΈ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚.

πŸ”₯ Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Swift для VS Code Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ фоновая индСксация ΠΈ встроСнная ΠΎΡ‚Π»Π°Π΄ΠΊΠ° с LLDB.

❓ Swift 6.2 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ WebAssembly, позволяя ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… срСд выполнСния.

βš™οΈ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Swift 6.2 Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Subprocess для управлСния внСшними процСссами ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ API для NotificationCenter.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚑7πŸ‘2❀1πŸ”₯1
НС ΠΌΠΎΠ³Ρƒ Π½Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΠΉ: ΠΌΠΎΠΉ Π΄Ρ€ΡƒΠ³ выпустил 10 часовой бСсплатный курс!!! ΠΏΡ€ΠΎ iOS Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ”₯

Если Π²Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Swift – ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ просмотру. И Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌΠΈ, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠΆ Ρ…ΠΎΡ‡Π΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ этот ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ.

https://www.youtube.com/watch?v=SUKocLwjA5k
πŸ”₯8πŸ‘5❀2
Как Swift Runtime влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ iOS-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

⚑️ Π’ΡƒΡ‚ наши рСбята Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ - супСр ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€. Π’ΠΎΡ‚ лишь нСсколько ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ².

βš™οΈ Swift Runtime ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ iOS-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, особСнно Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ соотвСтствия Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния.

‼️ ΠœΠ΅Ρ‚ΠΎΠ΄ swift_conformsToProtocolMaybeInstantiateSuperclasses являСтся ΡƒΠ·ΠΊΠΈΠΌ мСстом ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΡ‚ 1 Π΄ΠΎ 3 мс Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅, особСнно ΠΏΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² as? ΠΈ as! ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² String(describing:) ΠΈ String(reflecting:).

⚠️ РСкомСндуСтся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования String(describing:) ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² as? ΠΈ as!, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС type-generic-constraint-ΠΎΠ² для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния.

🀫 ИспользованиС type-generic-constraint-ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° swift_conformsToProtocolMaybeInstantiateSuperclasses Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ
соотвСтствия для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.

πŸ’― Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘7πŸ”₯2
Swift Default Value in String Interpolations

πŸ”₯ Swift 6.2 ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΡΡ†ΠΈΡŽ строк с ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями, позволяя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

❓ ΠŸΡ€ΠΈ интСрполяции строк с ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π°ΠΌΠΈ компилятор Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

🀫 Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² строкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π΅ зависСла ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния. Однако, ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ: LocalizedStringKey Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

// The count is not set
Text("The count is \(count, default: "not set")")
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘2
Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² Swift

❓ Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² Swift ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ для символов ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΈΡ… ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования.

➑️ Для доступа ΠΊ символам Π² строках Swift ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ индСкса String.Index, Π° Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа, Ρ‡Ρ‚ΠΎ связано с особСнностями прСдставлСния символов.

πŸ–₯ Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ unicodeScalars, utf16 ΠΈ utf8, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности ΠΈ количСство ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ. Π‘Π°ΠΌΠΈ ΠΆΠ΅ строки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Copy-on-Write, Ρ‡Ρ‚ΠΎ позволяСт эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΡƒΡΠΊΠΎΡ€ΡΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

➑️ Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Swift ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² NSString ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π³Π΄Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Swift ΠΈ Objective-C.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘4
Command tools, threads and QoS

ΠŸΠΎΡ‡Π΅ΠΌΡƒ супСр Π½Π°Π²ΠΎΡ€ΠΎΡ‡Π΅Π½Π½Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ°ΠΊ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ быстро ΡΠΆΠ°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· tar? πŸ€•
ΠšΡ€Π°ΠΉΠ½Π΅ интСрСсная ΡΡ‚Π°Ρ‚ΡŒΡ, которая ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² многопоточности Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ архивирования. Π’ΠΎΡ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ содСрТаниС.

❓ macOS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ QoS для распрСдСлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΠΎ ядрам процСссора, Ρ‡Ρ‚ΠΎ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. QoS Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚ 9 (background) Π΄ΠΎ 33 (userInteractive).

ℹ️ ΠžΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅ процСссы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ tar, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС доступныС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ядра.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘3
Feature flags in Swift

🚩 Feature flags Π² Swift ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сборки, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Debug, TestFlight ΠΈ App Store.

❓ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Xcode Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ: Debug ΠΈ Release. РСкомСндуСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ для App Store ΠΈ TestFlight для управлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

πŸ”₯ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пСрСчислСния Distribution ΠΈ структуры FeatureFlags позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ доступом ΠΊ функциям Π² зависимости ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сборки.

ℹ️ Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ инструмСнт ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ„Π»Π°Π³ΠΈ, ΠΊΠΎΠ³Π΄Π° функция Π³ΠΎΡ‚ΠΎΠ²Π°. РассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ настройки для ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠšΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ инструмСнт.

public struct FeatureFlags: Sendable, Decodable {
public let requirePaywall: Bool
public let requireOnboarding: Bool
public let featureX: Bool

public init(distribution: Distribution) {
switch distribution {
case .debug:
self.requirePaywall = true
self.requireOnboarding = true
self.featureX = true
case .appstore:
self.requirePaywall = true
self.requireOnboarding = true
self.featureX = false
case .testflight:
self.requirePaywall = false
self.requireOnboarding = true
self.featureX = true
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯2
How to unwrap [weak self] in Swift Concurrency Tasks?

πŸ” Π’ Swift, использованиС [weak self] Π² замыканиях ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠ² удСрТания, Π½ΠΎ Π½Π΅ всСгда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, особСнно для Π½Π΅-escaping Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ.

❌ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ нСструктурированного Task ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ°ΠΌ памяти, Ссли [weak self] ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Task Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ сразу послС Π΅Π³ΠΎ создания.

Task { [weak self] in
guard let self else { return } // это Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ

let data = await loadData()
let models = await processData(data)
}


βœ”οΈ Для прСдотвращСния сильного удСрТания self Π² Task, рСкомСндуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ self Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ self? для избСТания распаковки.

❓ ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… страниц, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ guard let self Π²Π½ΡƒΡ‚Ρ€ΡŒ Ρ†ΠΈΠΊΠ»Π° позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ удСрТания self дольшС, Ρ‡Π΅ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Task { [weak self] in
let data = await loadData()
guard self != nil else { return }

guard let models = await self?.processData(data) else {
return
}

// use models
}
Please open Telegram to view this post
VIEW IN TELEGRAM
⚑4πŸ‘Ž2πŸ”₯1
Derived Data: 5 Things iOS Developers Do Wrong

😐 МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ iOS Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, для Ρ‡Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΠΏΠ°ΠΏΠΊΠ° Derived Data, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСэффСктивному использованию Π΅Ρ‘ возмоТностСй.

❓ Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ всСй ΠΏΠ°ΠΏΠΊΠΈ Derived Data ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ процСсс сборки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΅Ρ‘ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ компиляции всСх зависимостСй.

ℹ️ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ RocketSim, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ врСмя сборки ΠΈ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

πŸ” Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС ΠΏΠ°ΠΏΠΊΠΈ сборки для выявлСния Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… рСсурсов ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° прилоТСния.

πŸ–₯ Xcode прСдоставляСт простой способ доступа ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Derived Data Ρ‡Π΅Ρ€Π΅Π· настройки, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π΅Ρ‘ использованиС.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘3
ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Swift

🟒 ΠŸΡ€ΠΈΠ½Π΅Ρ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ Π±Π°Π·Ρƒ.

ℹ️ ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Swift - это структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ доступ ΠΏΠΎ индСксу Π·Π° O(1).

❓ Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² массив происходит Π·Π° Π°ΠΌΠΎΡ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ константноС врСмя, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ массива ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·-Π·Π° копирования элСмСнтов.

⚠️ ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Swift ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ измСнСния Π² ΠΎΠ΄Π½ΠΎΠΌ массивС Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΠΈ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ссылочными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

πŸ‘€ Они ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΡƒΡ‡Π΅. Π’ зависимости ΠΎΡ‚ наличия Objective-C runtime, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ².

❓ Swift Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Copy-on-Write, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ копирования Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΡ… измСнСния.

❓ ArraySlice позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с подмноТСством элСмСнтов массива Π±Π΅Π· ΠΈΡ… копирования, Ρ‡Ρ‚ΠΎ экономит ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ врСмя.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘5❀1
РазбираСмся с existential container Π² Swift

❓ Existential container β€” это структура Π΄Π°Π½Π½Ρ‹Ρ… Π² Swift, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ значСния Ρ‚ΠΈΠΏΠΎΠ², скрытых Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для динамичСского Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ управлСния ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

βš™οΈ Existential container для non class-constrained Ρ‚ΠΈΠΏΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 5 ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… слов (40 Π±Π°ΠΉΡ‚) ΠΈ состоит ΠΈΠ· 24 Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…, указатСля Π½Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° ΠΈ указатСля Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.

❓ Value witness table (VWT) описываСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ позволяСт компилятору Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ для этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

❗️ Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, existential container примСняСт Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выдСлСния памяти Π² ΠΊΡƒΡ‡Π΅ для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ большС 3 Π±Π°ΠΉΡ‚.

βœ”οΈ РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли Π½Π΅Ρ‚ нСобходимости Π² динамичСском ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ излишнСго использования памяти ΠΈ увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯5😁1
How to Use OptionSet in Swift with code samples

ℹ️ OptionSet β€” это ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π² Swift, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΎΠΏΡ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΡ‚ΠΎΠ², позволяя ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ объСдинСниС ΠΈ пСрСсСчСниС.

πŸ–₯ Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° создаСтся структура TasksListOptions, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ OptionSet для опрСдСлСния ΠΎΠΏΡ†ΠΈΠΉ отобраТСния Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, поиск ΠΈ сортировка.

struct TasksListOptions: OptionSet {
let rawValue: Int

static let showFilter = TasksListOptions(rawValue: 1 << 0)
static let showSearch = TasksListOptions(rawValue: 1 << 1)
static let showSort = TasksListOptions(rawValue: 1 << 2)
static let showLayoutSelector = TasksListOptions(rawValue: 1 << 3)
}


❓ Π₯отя ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ enum для Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, OptionSet Π±ΠΎΠ»Π΅Π΅ эффСктивСн ΠΈ прСдоставляСт встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с опциями Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

βœ”οΈ OptionSet являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, стилСй ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² Swift, обСспСчивая ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
Please open Telegram to view this post
VIEW IN TELEGRAM
❀5