На Ρ‡Π΅ΠΌ написан ios

На Ρ‡Π΅ΠΌ написан iOS? ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ Π³Π°ΠΉΠ΄ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° iPhone

На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios

Π‘Π΅Π· Ρ‡Π΅Π³ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ, Ρ‚Π°ΠΊ это Π±Π΅Π· знания английского языка. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ информация ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ для iOS находится Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС Apple, Π° ΠΎΠ½ Π½Π° английском.

БобствСнныС языки программирования: Objective-C ΠΈ Swift.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса: Interface Builder, StoryBoards ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ SwiftUI.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ крос сп Π»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ языки для iOS рСкомСндуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ ограничСния ΠΏΠΎ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Ρƒ ΠΈΠ»ΠΈ просто Π½Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ инструмСнтами.

Π―Π·Ρ‹ΠΊ программирования для iOS

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ языки относятся ΠΊ Ρ‚Π΅ΠΌ самым Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ инструмСнтам ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Apple. Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, Π΅ΡΡ‚ΡŒ Π΄Π²Π° основных языка, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΈΡˆΡƒΡ‚ΡΡ прилоТСния для Apple:

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ

Ρ€Π°Π±ΠΎΡ‚Ρƒ с API систСмами Apple;

систСму контроля вСрсий, Ρ‚ΠΎΡ‚ ΠΆΠ΅ Git;

инструмСнты для создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: Sketch, Figma, Canva ΠΈ Π΄Ρ€.

Objective-C Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, Ссли ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΈ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΡƒΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° этом языкС угаснСт, хотя Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½Π° Π΅Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°.

Swift Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π·Π°ΠΉΠΌΠ΅Ρ‚ своС мСсто, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ заручился ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ самой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Apple, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ, Ссли Π² ΠΏΠ»Π°Π½Π°Ρ… ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ прилоТСния для iOS.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½Ρ‹

Ссли ΠΏΠΎΠ΄ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ Π’Ρ‹ Π½Π°ΠΆΠΌΡ‘Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π―Π·Ρ‹ΠΊ программирования Swift. Русская вСрсия

На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан iosΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€! 2 июня всС ΠΌΡ‹ Π²ΠΎΠΎΡ‡ΠΈΡŽ ΠΌΠΎΠ³Π»ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ компания Apple Π½Π°Ρ‡Π°Π»Π° Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡŽ Π² станС Objective-C Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², прСдставив ΠΌΠΈΡ€Ρƒ свой Π½ΠΎΠ²Ρ‹ΠΉ язык программирования – Swift. ВмСстС с этим, ΠΎΠ½Π° Π²Ρ‹Π»ΠΎΠΆΠΈΠ»Π° Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ языку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ пСрСвСсти, Ссли Π½Π° Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ спрос. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Π»Π°Π²Ρ‹. Если Ρ‚Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ интСрСсна, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ нСдСлю.

ОглавлСниС

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Swift
О Swift
Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Swift

Language guide
The Basics
Basic Operators
String and Characters
Collection Types
Control Flow
Functions
Closures
Enumerations
Classes and Structures
Properties
Methods
Subscripts
Inheritance
Initialization
Deinitialization
Automatic Reference Counting
Optional Chaining
Type Casting
Nested Types
Extensions
Protocols
Generics
Advanced Operators

Language Reference
About the Language Reference
Lexical Structure
Types
Expressions
Statements
Declarations
Attributes
Patterns
Generic Parameters and Arguments
Summary of the Grammar
Trademarks

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Swift

О языкС Swift

Swift – это Π½ΠΎΠ²Ρ‹ΠΉ язык программирования для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ iOS ΠΈ OS X ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сочСтаСт Π² сСбС всС Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΎΡ‚ C ΠΈ Objective-C, Π½ΠΎ лишСн ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π² ΡƒΠ³ΠΎΠ΄Ρƒ совмСстимости с C. Π’ Swift ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ бСзопасного программирования ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ соврСмСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ созданиС прилоТСния Π² простой, Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс. Swift, созданый Π½Π°ΠΌΠΈ с чистого листа, – это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ прилоТСния.

Swift разрабатывался Π½Π°ΠΌΠΈ нСсколько Π»Π΅Ρ‚. Основой Π½ΠΎΠ²ΠΎΠ³ΠΎ языка программирования послуТили ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ компилятор, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ. ΠœΡ‹ упростили процСсс управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° автоматичСского подсчСта ссылок – Automatic Reference Counting (ARC). Наши Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π»ΠΈΡΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. Objective-C Π½Π°Ρ‡Π°Π» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ, Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ – всС это создало благоприятныС условия для внСдрСния соврСмСнных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ИмСнно эта ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° послуТила Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ для Π½ΠΎΠ²ΠΎΠ³ΠΎ языка программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² для Apple.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Objective-C Swift покаТСтся Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ. Он сочСтаСт Π² сСбС Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΌΠΎΡ‰ΡŒ динамичСской ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Objective-C. Он ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ доступ ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌ Cocoa ΠΈ совмСстим с ΠΊΠΎΠ΄ΠΎΠΌ, написанным Π½Π° Objective-C. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹ΠΉ Π½Π° этой ΠΎΠ±Ρ‰Π΅ΠΉ основС язык ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Π΅ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ аспСкты языка программирования.

Swift Π½Π΅ ΠΎΡ‚ΠΏΡƒΠ³Π½Π΅Ρ‚ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык программирования, Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ понятный ΠΈ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΠΊΠ°ΠΊ скриптовый язык. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ playground-Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ программистам ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ, видя Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±Π΅Π· нСобходимости ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Swift Π²ΠΎΠ±Ρ€Π°Π» Π² сСбя всС Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΎΡ‚ соврСмСнных языков ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Apple. Наш компилятор – синоним ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, наш язык ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Π΅Π· оглядки Π½Π° компромиссы. Он спроСктирован Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ смогли Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ вашС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«hello, world!Β», ΠΈ Π΄Π°ΠΆΠ΅ Ρ†Π΅Π»ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму. ВсС это Π΄Π΅Π»Π°Π΅Ρ‚ Swift Π²Π°ΠΆΠ½Ρ‹ΠΌ инструмСнтом для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ для самой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Apple.

Swift – это Π½ΠΎΠ²Ρ‹ΠΉ фантастичСский способ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния для iOS ΠΈ OS X, ΠΈ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, добавляя Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΈ прСдставляя Π½ΠΎΠ²Ρ‹Π΅ возмоТности. Наша Ρ†Π΅Π»ΡŒ – Π°ΠΌΠ±ΠΈΡ†ΠΈΠΎΠ·Π½Π°. И ΠΌΡ‹ с Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сумССтС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½Π΅Π³ΠΎ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Swift

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈ Π½Π° C ΠΈΠ»ΠΈ Objective-C этот синтаксис Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π°ΠΌ Π΄ΠΎ Π±ΠΎΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ – Π² Swift эта строчка ΠΊΠΎΠ΄Π° являСтся Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π’Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для обСспСчСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π²Ρ€ΠΎΠ΄Π΅ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π² консоль ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками. Код, написанный Π² глобальной области видимости, являСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ функция main большС Π½Π΅ Π½ΡƒΠΆΠ½Π°. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° отсутствиС Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки.

Π­Ρ‚ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ содСрТит достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Swift. НС ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅, Ссли Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ нСпонятно – ΠΌΡ‹ всС Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ объясним Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ….

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ playground Π² Xcode. Playground позволяСт Π²Π°ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сразу Π² процСссС рСдактирования ΠΊΠΎΠ΄Π° Π±Π΅Π· нСобходимости ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ let для создания константы ΠΈ var для создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ΠΈΠΏ константы ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ лишь Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ‹.

Π’ΠΈΠΏΡ‹ константы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ присваиваСмых ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Однако это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Ρ‚ΠΈΠΏ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Ρ‚ΠΈΠΏ константы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ присваивании ΠΈΠΌ значСния. Π’Π°ΠΊ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ компилятор ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚, Ρ‡Ρ‚ΠΎ myVariable ΠΈΠΌΠ΅Π΅Ρ‚ цСлочислСнный Ρ‚ΠΈΠΏ.

Если ΠΆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ отсутствуСт ΠΈΠ»ΠΈ Π½Π΅ прСдоставляСт достаточной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ послС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΈΠΏ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ константу с Ρ‚ΠΈΠΏΠΎΠΌ Float ΠΈ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π΅ числом 4.

ЗначСния Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ нСявно. Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ, Π΄Π΅Π»Π°ΠΉΡ‚Π΅ это явно:

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ явноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΈΠΏΡƒ String Π² послСднСй строкС. ΠšΠ°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅?

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ простой способ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² строки: для этого Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² скобки ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш ( \ ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ \() ΠΈ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π° экран строку, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΡƒΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ суммы Π΄Π²ΡƒΡ… цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ‡ΡŒΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ имя.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами ΠΈ ассоциативными массивами (словарями, dictionary) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ( [] ):

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой массив ΠΈΠ»ΠΈ dictionary, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

Для создания пустых массивов ΠΈ словарСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [] ΠΈ [:] соотвСтствСнно, – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ присваиваСтС Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Условия ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹

УсловиС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ логичСским, это Π² частности ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ if score <…>являСтся ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ здСсь Π½Π΅Ρ‚ явного сравнСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Π½ΡƒΠ»Π΅ΠΌ).

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π° switch ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ лишь простыми сравнСниями:

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ условиС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠšΠ°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅?

Для пСрСбирания элСмСнтов ассоциативного массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for-in совмСстно с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Ρ‹ ΠΈΠΌΠ΅Π½ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ‚ΠΈΠΏΠΎΠ² относится Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ максимальноС число.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° while позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° условиС Π½Π΅ станСт Π»ΠΎΠΆΠ½Ρ‹ΠΌ. УсловиС Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ послС Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ замыкания.

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ day. ВмСсто Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΡƒΡŽ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° ΠΎΠ±Π΅Π΄ блюда.

Если функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ срСднСС арифмСтичСскоС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ числа своих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°. ВлоТСнная функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ Π²ΠΎ внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти Π² порядок ΠΊΠΎΠ΄ слоТной ΠΈΠ»ΠΈ большой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса (first-class type), ΠΈΠ½Ρ‹ΠΌΠΈ словами, функция Π² качСствС свого Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Ѐункция Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² качСствС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»ΠΎ ноль для всСх Π»ΠΈΡˆΠ½ΠΈΡ… чисСл.

БущСствуСт нСсколько Ρ‚Π΅Ρ…Π½ΠΈΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π΄Π΅Π»Π°Ρ‚ΡŒ замыкания Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌΠΈ. Если Ρ‚ΠΈΠΏ замыкания Π°ΠΏΡ€ΠΈΠΎΡ€ΠΈ извСстСн (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это callback Π΄Π΅Π»Π΅Π³Π°Ρ‚Π°), ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ/ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния. Замыкания, состоящиС ΠΈΠ· СдинствСнного выраТСния, нСявно Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого выраТСния.

Π’ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΈ вмСсто указания ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ порядковый Π½ΠΎΠΌΠ΅Ρ€ – это особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ написании ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ. Π—Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅, ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ послСдним Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π² Π½Π΅Π΅ сразу послС ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок с ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ классы

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ константу-Ρ‡Π»Π΅Π½ класса ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ Π΅Π΅ Π² качСствС своСго Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) класса, достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки послС названия класса. Доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ Ρ‡Π»Π΅Π½Π°ΠΌ класса осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ класс ΠΎΡ‚ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса, послС указания ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса слСдуСт ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ. Π’ Swift Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ наслСдованию ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ стандартного класса.

Π£ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² классов имССтся ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Названия Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ класса ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ названия ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅, Ρ‚Π°ΠΊ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ (Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ – times ), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ использовано Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΡ€ΠΈ этом для Π²Ρ‹Π·ΠΎΠ²Π° этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ( numberOfTimes ).

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая сравниваСт 2 пСрСчислСния Ρ‚ΠΈΠΏΠ° Rank ΠΏΠΎ ΠΈΡ… значСниям.

Π’ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ элСмСнты пСрСчислСния ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ цСлочислСнный Ρ‚ΠΈΠΏ, ΠΈ Π²Π°ΠΌ достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта – значСния ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² соотвСтствии с порядком ΠΈΡ… слСдования. Π’ качСствС исходного Ρ‚ΠΈΠΏΠ° (raw value) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ строковый ΠΈΠ»ΠΈ вСщСствСнныС Ρ‚ΠΈΠΏΡ‹.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ значСния элСмСнтов пСрСчислСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ фактичСскими, Π° Π½Π΅ просто ΠΈΠ½ΠΎΠΉ записью своих исходных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… исходныС значСния.

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² структуру Card ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ΄Ρƒ ΠΊΠ°Ρ€Ρ‚.

ЭкзСмпляр Ρ‡Π»Π΅Π½Π° пСрСчислСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнныС значСния ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Π’Ρ‹ присваиваСтС эти значСния ΠΏΡ€ΠΈ создании экзСмпляра пСрСчислСния (константа success Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅). БвязанныС ΠΈ исходныС значСния это Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ: исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‡Π»Π΅Π½Π° пСрСчислСния всСгда постоянно для всСх экзСмпляров пСрСчислСния ΠΈ указываСтся ΠΏΡ€ΠΈ Π΅Π³ΠΎ объявлСнии.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ получСния с сСрвСра Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ восхода ΠΈ Π·Π°ΠΊΠ°Ρ‚Π° Π‘ΠΎΠ»Π½Ρ†Π°. Π‘Π΅Ρ€Π²Π΅Ρ€ отправляСт Π² ΠΎΡ‚Π²Π΅Ρ‚ Π»ΠΈΠ±ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π»ΠΈΠ±ΠΎ сообщСниС ΠΎΠ± ошибкС.

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π° switch

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ServerResponse β€œΠ²Ρ‹Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡβ€ врСмя восхода ΠΈ Π·Π°ΠΊΠ°Ρ‚Π°.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈ Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ классами, пСрСчислСниями ΠΈ структурами.

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ пСрСчислСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Π±ΡƒΠ΄ΡƒΡ‚ нСдоступны.

ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (generics)

Для создания ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ имя Π² ΡƒΠ³Π»ΠΎΠ²Ρ‹Π΅ скобки ( <> ).

Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классы, пСрСчислСния ΠΈ структуры.

Π”Π°Π²Π°ΠΉΡ‚Π΅ поэкспСримСнтируСм
Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ anyCommonElements Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»Π° массив ΠΎΠ±Ρ‰ΠΈΡ… элСмСнтов.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ подписки Π² iOS-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° 10 ΠΌΠΈΠ½ΡƒΡ‚? Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Apphud ΠΈ:
β€” оформляйтС ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ лишь ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°;
β€” автоматичСски отслСТивайтС состояниС подписки ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;
β€” Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Subscription Offers;
β€” отправляйтС события ΠΎ подписках Π² Amplitude, Mixpanel, Slack ΠΈ Telegram с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ локальной Π²Π°Π»ΡŽΡ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;
β€” ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΠΉΡ‚Π΅ Churn rate Π² прилоТСниях ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ ΠΎΡ‚ΠΏΠΈΡΠ°Π²ΡˆΠΈΡ…ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠ°Ρƒ устроСна iOS

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

Mac OS X

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма, установлСнная сСгодня Π½Π° всС ΠΌΠ°ΠΊΠΈ ΠΈ (Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅) Π½Π° айдСвайсы, Π²Π΅Π΄Π΅Ρ‚ свою ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π°ΠΆ с 1988 Π³ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΌΠΈΡ€Π΅ IT извСстСн Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ стал Π³ΠΎΠ΄ΠΎΠΌ выпуска ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±Π΅Ρ‚Π°-вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы NeXTSTEP. Π‘Π°ΠΌΠ° NeXTSTEP Π±Ρ‹Π»Π° Π΄Π΅Ρ‚ΠΈΡ‰Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π‘Ρ‚ΠΈΠ²Π° ДТобса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊ Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎΠΊΠΈΠ½ΡƒΠ» Apple ΠΈ основал компанию NeXT, которая занялась Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² для ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½ΡƒΠΆΠ΄.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ своСго появлСния Π½Π° свСт NeXTSTEP Π±Ρ‹Π»Π° поистинС ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° Π² сСбя мноТСство тСхнологичСских Π½ΠΎΠ²Π°Ρ†ΠΈΠΉ. Π’ основС ОБ Π»Π΅ΠΆΠ°Π»ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ микроядро Mach, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ядра FreeBSD, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΡ‚Π°Π»ΠΎΠ½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сСтСвого стСка. Π‘ΠΎΠ»Π΅Π΅ высокоуровнСвыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ NeXTSTEP Π±Ρ‹Π»ΠΈ написаны с использованиСм языка Objective-C ΠΈ прСдоставляли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ API. БистСма Π±Ρ‹Π»Π° снабТСна Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ΠΌ ΠΈ вСсьма ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ графичСским интСрфСйсом (ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² OS X ΠΈ Π΄Π°ΠΆΠ΅ iOS) ΠΈ ΠΌΠΎΡ‰Π½ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Π²ΡˆΠ΅ΠΉ Π² сСбя Π² Ρ‚ΠΎΠΌ числС извСстный всСм соврСмСнным Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ интСрфСйса.

ПослС ΠΏΡ€ΠΎΠ²Π°Π»Π° NeXT ΠΈ возвращСния Π‘Ρ‚ΠΈΠ²Π° ДТобса Π² компанию Apple Π² 1997 Π³ΠΎΠ΄Ρƒ NeXTSTEP Π»Π΅Π³Π»Π° Π² основу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rhapsody, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° систСмы-наслСдника Mac OS 9. Π’ 2000 Π³ΠΎΠ΄Ρƒ ΠΈΠ· Rhapsody Π±Ρ‹Π» Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Darwin, исходники ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ APSL, Π° ΡƒΠΆΠ΅ Π² 2001 Π³ΠΎΠ΄Ρƒ появилась Π½Π° свСт OS X 10.0, построСнная Π½Π° Π΅Π³ΠΎ основС. Бпустя нСсколько Π»Π΅Ρ‚ Darwin Π»Π΅Π³ Π² основу ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы для готовящСгося ΠΊ выпуску смартфона, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎ 2007-Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ слухов, Π½Π΅ Π±Ρ‹Π»ΠΎ извСстно ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ.

На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios

XNU ΠΈ Darwin

Условно Π½Π°Ρ‡ΠΈΠ½ΠΊΡƒ OS X / iOS ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€ΠΈ логичСских уровня: ядро XNU, слой совмСстимости со стандартом POSIX (плюс Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ систСмныС Π΄Π΅ΠΌΠΎΠ½Ρ‹/сСрвисы) ΠΈ слой NeXTSTEP, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ графичСский стСк, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΈ API ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Darwin Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° слоя ΠΈ распространяСтся свободно, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² вСрсии для OS X. iOS-Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ARM ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΈ распространяСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² составС ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ для айдСвайсов (судя ΠΏΠΎ всСму, это Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ портирования iOS Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ устройства).

По своСй сути Darwin β€” это «голая» UNIX-подобная ОБ, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя POSIX API, шСлл, Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ сСрвисов, минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы Π² консольном Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ запуска UNIX-софта. Π’ этом ΠΏΠ»Π°Π½Π΅ ΠΎΠ½ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π±Π°Π·ΠΎΠ²ΡƒΡŽ систСму FreeBSD ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ установку ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Arch Linux, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ UNIX-софт, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈ графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π½ΠΈ всСго Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для запуска ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· срСд GNOME ΠΈΠ»ΠΈ KDE.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Darwin β€” Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠ΅ ядро XNU, основанноС, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, Π½Π° ядрС Mach ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ядра FreeBSD, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ процСссов, сСтСвой стСк ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ файловая систСма (слой VFS). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Mach ΠΈ FreeBSD, ядро OS X ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнный API Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ I/O Kit ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Π½Π° C++, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, сильно ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

iOS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ XNU, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² силу Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ядро iOS Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ, ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° Apple, Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ собрано с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ опциями компилятора ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ нСбольшиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²ΠΊΠΈ Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах. Π’ΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ это всС Ρ‚ΠΎ ΠΆΠ΅ XNU, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π²ΠΈΠ΄Π΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ кСша (ядро + всС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹/ΠΌΠΎΠ΄ΡƒΠ»ΠΈ) Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /System/Library/Caches/com.apple.kernelcaches/kernelcache Π½Π° самом устройствС.

Π£Ρ€ΠΎΠ²Π½Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ядра Π² Darwin располагаСтся слой UNIX/BSD, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя Π½Π°Π±ΠΎΡ€ стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ языка си (libc, libmatch, libpthread ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), Π° Ρ‚Π°ΠΊΠΆΠ΅ инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½Π°Π±ΠΎΡ€ шСллов (bash, tcsh ΠΈ ksh) ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ launchd ΠΈ стандартный SSH-сСрвСр. ПослСдний, кстати, ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€Π°Π²ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° /System/Library/LaunchDaemons/ssh.plist. Если, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄ΠΆΠ΅ΠΉΠ»Π±Ρ€Π΅ΠΉΠΊΠ½ΡƒΡ‚ΡŒ дСвайс.

На этом открытая Ρ‡Π°ΡΡ‚ΡŒ ОБ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Darwin заканчиваСтся, ΠΈ начинаСтся слой Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ OS X / iOS.

На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios

На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ

Darwin Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ лишь Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Mac OS / iOS, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, запуск/остановка систСмы, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Ρ‚ΡŒΡŽ, изоляция ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). Π’Π° Ρ‡Π°ΡΡ‚ΡŒ систСмы, которая Π²ΠΈΠ΄Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ прилоТСниям, Π² Π΅Π³ΠΎ состав Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… β€” Π½Π°Π±ΠΎΡ€Π°Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ сСрвисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π² Ρ‚ΠΎΠΌ числС Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ графичСского окруТСния ΠΈ высокоуровнСвый API для сторонних ΠΈ стоковых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Как ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ОБ, API Mac OS ΠΈ iOS Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΌ прилоТСниям доступСн ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ сильно ΡƒΡ€Π΅Π·Π°Π½Π½Ρ‹ΠΉ API, ΠΎΠ΄Π½Π°ΠΊΠΎ jailbreak-прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ.

Π’ стандартной поставкС Mac OS ΠΈ iOS ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ дСсятки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° доступ ΠΊ самым Ρ€Π°Π·Π½Ρ‹ΠΌ функциям ОБ β€” ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ адрСсной ΠΊΠ½ΠΈΠ³ΠΈ (Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ AddressBook) Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenGL (GLKit). Набор Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ объСдинСн Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Cocoa API, своСго Ρ€ΠΎΠ΄Π° ΠΌΠ΅Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ основным возмоТностям ОБ. Π’ iOS ΠΎΠ½ носит имя Cocoa Touch ΠΈ отличаСтся ΠΎΡ‚ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΉ вСрсии ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π½Π° сСнсорныС дисплСи.

Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ доступны Π² ΠΎΠ±Π΅ΠΈΡ… ОБ. МногиС ΠΈΠ· Π½ΠΈΡ… спСцифичны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для iOS. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ привСсти AssetsLibrary, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с фотографиями ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, CoreBlueTooth, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ синСзубу, ΠΈΠ»ΠΈ iAd, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹Ρ… объявлСний Π² прилоТСниях. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΉ вСрсии систСмы, ΠΎΠ΄Π½Π°ΠΊΠΎ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Apple пСрСносит Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ части iOS Π² Mac OS ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ CoreMedia, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² iOS.

ВсС стандартныС систСмныС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² систСмном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /System/Library/Frameworks/. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… находится Π² своСм собствСнном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ Π±Π°Π½Π΄Π»ΠΎΠΌ (boundle), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя рСсурсы (изобраТСния ΠΈ описаниС элСмСнтов интСрфСйса), Ρ…ΠΈΠ΄Π΅Ρ€Ρ‹ языка си, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ API, Π° Ρ‚Π°ΠΊΠΆΠ΅ динамичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ (Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ dylib) с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

Одна ΠΈΠ· интСрСсных особСнностСй Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² β€” ΠΈΡ… Π²Π΅Ρ€ΡΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒ. Один Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ сразу нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий, поэтому ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ для ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… вСрсий систСмы, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ нСсмотря Π½Π° измСнСния, внСсСнныС Π² Π½ΠΎΠ²Ρ‹Π΅ вСрсии ОБ. ИмСнно Ρ‚Π°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ запуска старых iOS-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² iOS 7 ΠΈ Π²Ρ‹ΡˆΠ΅. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ для iOS 6, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ Π² iOS 6.

SpringBoard

Π£Ρ€ΠΎΠ²Π½Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ находятся прилоТСния, систСмныС ΠΈ устанавливаСмыС ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ мСсто срСди Π½ΠΈΡ… Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, SpringBoard (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² iOS), Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ домашний экран (Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол). ИмСнно ΠΎΠ½ΠΎ запускаСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ послС старта систСмных Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ старта дисплСйного сСрвСра (ΠΎΠ½ ΠΆΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ½Π³Π°, ΠΎΠ½ ΠΆΠ΅ Quartz Compositor), ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π° Π²Ρ‹Π²ΠΎΠ΄ изобраТСния Π½Π° экран.

SpringBoard β€” это ΡΠ²ΡΠ·ΡƒΡŽΡ‰Π΅Π΅ Π·Π²Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, графичСский интСрфСйс, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ прилоТСния, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ увСдомлСния ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ настройками систСмы (начиная с iOS 7). Но Ρ‚Π°ΠΊΠΆΠ΅ это ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ касаниС экрана ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€ΠΎΡ‚ устройства. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Mac OS X, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прилоТСния ΠΈ Π΄Π΅ΠΌΠΎΠ½Ρ‹-Π°Π³Π΅Π½Ρ‚Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² интСрфСйса (Finder, Dashboard, LaunchPad ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅), Π² iOS ΠΏΠΎΡ‡Ρ‚ΠΈ всС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π² Ρ‚ΠΎΠΌ числС экран Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Β«ΡˆΡ‚ΠΎΡ€ΠΊΠ°Β», Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ SpringBoard.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… стоковых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ iOS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /Applications, SpringBoard Π½Π°Ρ€Π°Π²Π½Π΅ с дисплСйным сСрвСром считаСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ располагаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /System/Library/CoreServices/. Для выполнСния ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π² /System/Library/SpringBoardPlugins/. ΠšΡ€ΠΎΠΌΠ΅ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, NowPlayingArtLockScreen.lockboundle, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π° экранС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΠ»ΠΈ IncomingCall.serviceboundle, отвСтствСнный Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ входящСго Π·Π²ΠΎΠ½ΠΊΠ°.

Начиная с iOS 6 SpringBoard Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π΅ части: сам Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол ΠΈ сСрвис BackBoard, отвСтствСнный Π·Π° ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ОБ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ HAL). BackBoard ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ‚Π°ΠΊΠΈΡ… событий, ΠΊΠ°ΠΊ касания экрана, наТатия клавиш, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ показания аксСлСромСтра, Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° полоТСния ΠΈ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° освСщСнности, Π° Ρ‚Π°ΠΊΠΆΠ΅ управляСт запуском, приостановкой ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

SpringBoard ΠΈ BackBoard ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для iOS, Ρ‡Ρ‚ΠΎ, Ссли ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡ… ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, вся систСма застынСт Π½Π° мСстС ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° касания экрана. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΈΡ… ΠΎΡ‚ домашнСго экрана Android, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся всСго лишь стандартным ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· систСмы (Π² этом случаС Π½Π° экранС останутся Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΈ строка состояния со Β«ΡˆΡ‚ΠΎΡ€ΠΊΠΎΠΉΒ»).

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ

На самой Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ этой ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ находятся прилоТСния. iOS Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅Ρ‚ встроСнныС (стоковыС) высоко ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прилоТСния ΠΈ сторонниС, устанавливаСмыС ΠΈΠ· iTunes. И Ρ‚Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ хранятся Π² систСмС Π² Π²ΠΈΠ΄Π΅ Π±Π°Π½Π΄Π»ΠΎΠ², Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π½Π° Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². Π Π°Π·Π½ΠΈΡ†Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Π°Π½Π΄Π» прилоТСния Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя нСсколько ΠΈΠ½ΡƒΡŽ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π° мСсто динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ исполняСмый Ρ„Π°ΠΉΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Mach-O.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ хранСния стоковых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” /Applications/. Π’ iOS ΠΎΠ½ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ статичный ΠΈ измСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ систСмы; ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ прилоТСния, устанавливаСмыС ΠΈΠ· iTunes, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², хранятся Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ /var/mobile/Applications/ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄ 4-2-2-2-4, Π³Π΄Π΅ Π΄Π²Π° ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ β€” это ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ числа. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ GUID β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² систСмС ΠΈ Π½ΡƒΠΆΠ΅Π½ Π² Ρ‚ΠΎΠΌ числС для создания ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ пСсочницы (sandbox).

Sandbox

Π’ iOS пСсочницы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для изолирования сСрвисов ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ‚ систСмы ΠΈ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. КаТдоС стороннСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСмных Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² пСсочницС. Π‘ тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния пСсочница прСдставляСт собой классичСский для ΠΌΠΈΡ€Π° UNIX chroot, усилСнный систСмой ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ контроля доступа TrustedBSD MAC (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра sandbox.kext), которая ΠΎΡ‚Ρ€Π΅Π·Π°Π΅Ρ‚ прилоТСниям Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ домашнСго ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π½ΠΎ ΠΈ прямой доступ ΠΊ ΠΆΠ΅Π»Π΅Π·Ρƒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ систСмным функциям ОБ.

Π’ Ρ†Π΅Π»ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ Π² sandbox ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… возмоТностях:

ВсС эти ограничСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ sandbox-ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ (Π½Π°Π±ΠΎΡ€Ρƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ») container ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ стороннСму ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Для стоковых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ограничСния, Π±ΠΎΠ»Π΅Π΅ мягкиС ΠΈΠ»ΠΈ ТСсткиС. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ MobileMail), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ограничСния, ΠΊΠ°ΠΊ ΠΈ сторонниС прилоТСния, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСму содСрТимому ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Library/. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ситуация β€” SpringBoard, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” это Π·Π°Ρ‰ΠΈΡ‚Π° систСмы ΠΎΡ‚ самой сСбя ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π‘Π°Π³ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² стоковом софтС ΠΎΡ‚ Apple, Ρ‚Π°ΠΊ ΠΈ Π² Π³ΠΎΠ»ΠΎΠ²Π°Ρ… ΡŽΠ·Π΅Ρ€ΠΎΠ². Sandbox Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ…. Π”Π°ΠΆΠ΅ Ссли Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π΄Ρ‹Ρ€Ρƒ Π² Safari ΠΈ попытаСтся Π΅Π΅ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ½ всС Ρ€Π°Π²Π½ΠΎ останСтся Π² пСсочницС ΠΈ Π½Π΅ смоТСт Π½Π°Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ систСмС. А ΡŽΠ·Π΅Ρ€ Π½Π΅ смоТСт Β«ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ свой Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‡ΠΈΠΊΒ» ΠΈ Π½Π΅ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ Π³Π½Π΅Π²Π½Ρ‹Ρ… ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ² Π² адрСс Apple. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π·Π½Π°ΡŽΡ‰ΠΈΠ΅ люди всСгда ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ jailbreak ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ sandbox (собствСнно, Π² этом ΠΈ Π΅ΡΡ‚ΡŒ смысл Π΄ΠΆΠ΅ΠΉΠ»Π±Ρ€Π΅ΠΉΠΊΠ°).

ΠœΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ

Одна ΠΈΠ· самых спорных особСнностСй iOS β€” это рСализация многозадачности. Она Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΈ Π΅ΡΡ‚ΡŒ, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π΅Π΅ Π½Π΅Ρ‚. Π’ сравнСнии с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ОБ ΠΈ прСсловутым Android iOS Π½Π΅ являСтся ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ смыслС этого слова ΠΈ Π½Π΅ позволяСт прилоТСниям свободно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ„ΠΎΠ½Π΅. ВмСсто этого ОБ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для выполнСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ находится Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Π°ΠΊΠΎΠΉ API появился Π² iOS 4 (Π΄ΠΎ этого Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стоковыС прилоТСния) ΠΈ наращивался ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. БСгодня (Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± iOS 7) Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Background API позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’Π°ΠΊΠΈΠ΅ ограничСния Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ„ΠΎΠ½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ заряд Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»Π°Π³ΠΎΠ² интСрфСйса, Ρ‚Π°ΠΊ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Android, Π³Π΄Π΅ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Ρ„ΠΎΠ½Π΅ всС Ρ‡Ρ‚ΠΎ захотят. На самом Π΄Π΅Π»Π΅ Apple Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ сильно заботится ΠΎ сохранСнии Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… дСйствий ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΡ… запуска Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° смартфон Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ Wi-Fi-сСти ΠΈΠ»ΠΈ ΠΊ зарядному устройству.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π‘Ρ‚ΠΎΠΈΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π° врСмя своСго развития ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π° Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ дСвайсы NeXTSTEP Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ растСряла всС свои достоинства, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈΡƒΠΌΠ½ΠΎΠΆΠΈΠ»Π° ΠΈΡ…. МоТно Π΄ΠΎΠ»Π³ΠΎ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ россказни сотрудников Google, ΡƒΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΡ…, Ρ‡Ρ‚ΠΎ Android разрабатывался Π±Π΅Π· оглядки Π½Π° iOS, Π½ΠΎ Ρ„Π°ΠΊΡ‚ остаСтся Ρ„Π°ΠΊΡ‚ΠΎΠΌ: ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Android позаимствовал ΠΈΠΌΠ΅Π½Π½ΠΎ Ρƒ iOS. И Π½Π΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Π° благодаря ΠΈΡ… красотС ΠΈ эффСктивности.

Π¨Π΅ΡΡ‚ΡŒ стадий Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ iOS

4 Π―Π΄Ρ€ΠΎ. Π—Π΄Π΅ΡΡŒ всС ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ. Π―Π΄Ρ€ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ оборудования, послС Ρ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρƒ launchd.

5 Launchd. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ процСсс iOS ΠΈ Mac OS X, ΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы, запускаСт Π΄Π΅ΠΌΠΎΠ½Ρ‹/слуТбы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, backupd, configd, locationd), дисплСйный сСрвСр, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Π° Π½Π° послСднСм этапС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ SpringBoard. Π’ iOS ΠΈ Mac OS X launchd ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° стандартного /bin/init Π² UNIX, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡˆΠΈΡ€Π΅.

6 SpringBoard. Π’ΠΎΡ‚ ΠΈ экран Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ!

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа Π² этой Ρ†Π΅ΠΏΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ chain of trust, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свСрки Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π¦ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ подпись ΠΈΠΌΠ΅ΡŽΡ‚ LLB, iBoot ΠΈ ядро, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Ρ…Π°ΠΊΠ½ΡƒΡ‚ΠΎΠ³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ ядра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ стороннСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈΠ»ΠΈ Π΄ΠΆΠ΅ΠΉΠ»Π±Ρ€Π΅ΠΉΠΊΠ°. ЕдинствСнный способ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ β€” Π½Π°ΠΉΡ‚ΠΈ Π΄Ρ‹Ρ€Ρƒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Сю для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π’ своС врСмя Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ нСсколько Ρ‚Π°ΠΊΠΈΡ… Π΄Ρ‹Ρ€ Π² Boot ROM (Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ извСстСн эксплойт limera1n ΠΎΡ‚ geohot, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ для iPhone 1–4), Π° Π² Π½Π°Ρ‡Π°Π»Π΅ 2014 Π³ΠΎΠ΄Π° ΠΈ Π² iBoot (Ρ…Π°ΠΊΠ΅Ρ€ iH8sn0w, эксплойт Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½).

УдСрТивая ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π”ΠΎΠΌΠΎΠΉΒ» ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ iPhone, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ iBoot Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ восстановлСния (Recovery), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ iOS ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ iTunes. Однако ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСского OTA-обновлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ, ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹ΠΉ DFU (Device Firmware Upgrade), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ активируСтся Π½Π° Ρ€Π°Π½Π½Π΅ΠΌ этапС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сразу послС Boot ROM ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…: iBSS ΠΈ iBEC. По сути, это Π°Π½Π°Π»ΠΎΠ³ΠΈ LLB ΠΈ iBoot, конСчная Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… β€” Π½Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ОБ, Π° пСрСвСсти смартфон Π² Ρ€Π΅ΠΆΠΈΠΌ обновлСния.

На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios

На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан ios. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан ios. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан ios

Π•Π²Π³Π΅Π½ΠΈΠΉ Π—ΠΎΠ±Π½ΠΈΠ½

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠΈ X-Mobile. По ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Ρƒ сисадмин. Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ Ρ„Π°Π½Π°Ρ‚ Linux, Plan 9, Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈ Π΄Ρ€Π΅Π²Π½ΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *