Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 66

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

β€’ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ. Π’Π°ΠΊ, Ссли Π²Ρ‹ создаСтС подклассы ΠΎΡ‚ NSOperation, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ собствСнныС Π²ΠΈΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ экзСмпляра isCancelled. Он примСняСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ Π±Ρ‹Π»Π° Π»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π° опрСдСлСнная опСрация, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ, связанной с этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. НапримСр, Ссли Π·Π°Π΄Π°Ρ‡Π° вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ соСдинСния с Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΠΌ Ρ€Π°Π· Π² 20 с, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ запуском ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра isCancelled, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сначала ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ опСрация Π½Π΅ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π°, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ соСдинСния с Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΠΌ. Если Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСкунд (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли это Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π°), Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ пСриодичСски ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ isCancelled.

β€’ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ обязаны Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Β«ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠ± измСнСниях Π² свойствах наблюдаСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Β» (KVO, Key-Value Observing) Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… путях, Π² частности isFinished, isReady ΠΈ isExecuting. Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π² ΠΌΡ‹ обсудим ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ KVO, Π° Ρ‚Π°ΠΊΠΆΠ΅ KVC β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для доступа ΠΊ полям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ этих ΠΏΠΎΠ»Π΅ΠΉ.

β€’ Π•сли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ подкласс ΠΎΡ‚ NSOperation ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π²Π°ΠΌ слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный автоматичСски высвобоТдаСмый ΠΏΡƒΠ» Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main, относящСмся ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° start. Π­Ρ‚ΠΈ вопросы ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим Π΄Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅.

β€’ Π’сСгда сохраняйтС ссылки Π½Π° создаваСмыС Π²Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘Π°ΠΌΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π°, присущая очСрСдям ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ получСния ссылки Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.


ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ подклассами ΠΎΡ‚ NSObject. Для пороТдСния ΠΏΠΎΡ‚ΠΎΠΊΠ° выполняСтся большС Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‡Π΅ΠΌ для создания Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ², Π° настройка Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” Π±ΠΎΠ»Π΅Π΅ слоТная Π·Π°Π΄Π°Ρ‡Π°, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΡΠ»ΡƒΡˆΠ°Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ сСлСктор. Когда ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС iOS, систСма создаСт для этого прилоТСния ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ называСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ (Main Thread). ВсС ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Ρ†ΠΈΠΊΠ» исполнСния (Run Loop). Π¦ΠΈΠΊΠ» исполнСния, ΠΊΠ°ΠΊ понятно ΠΈΠ· Π΅Π³ΠΎ названия, β€” это Ρ†ΠΈΠΊΠ», Π² Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ события, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ запуск Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² исполнСния Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этой Π³Π»Π°Π²Ρ‹, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° я Π±ΡƒΠ΄Ρƒ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ».

Π¦ΠΈΠΊΠ» исполнСния β€” это, Π² сущности, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ», Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ°, условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈ сСрия событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ…ΠΎΠ΄Π΅ этого Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΡ‚ΠΎΠΊ ΠΈΠ»ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡŽΡ‚ΡΡ ΠΊ Ρ†ΠΈΠΊΠ»Ρƒ исполнСния, ΠΈ, Π² сущности, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ†ΠΈΠΊΠ» исполнСния Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ прилоТСния β€” это Ρ‚ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ события ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Если Π²Ρ‹ выполняСтС Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Ρ‚ΠΎ быстро станСт Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ интСрфСйс пСрСстаСт ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° запросы ΠΈΠ»ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ этого ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΈ/ΠΈΠ»ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ (Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ долговрСмСнная). Но ΠΏΡ€ΠΈ этом Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

7.1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

НСобходимо ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнныС Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с классами ΠΈΠ· iOS SDK.

РСшСниС

ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ синтаксисом Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ синтаксисом классичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка C. Π­Ρ‚Π° Ρ€Π°Π·Π½ΠΈΡ†Π° рассматриваСтся Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅Β» Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π‘Π»ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ встраиваСмыми, Π»ΠΈΠ±ΠΎ записываСмыми ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°. НачнСм с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ языка Objective-C, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Π΄Π²Π° цСлочислСнных значСния Ρ‚ΠΈΠΏΠ° NSInteger ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π΄Π²ΡƒΡ… этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ΅ NSInteger. Π Π°Π·Π½ΠΈΡ†Π° получаСтся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ вычитания ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ:


β€” (NSInteger) subtract:(NSInteger)paramValue

from:(NSInteger)paramFrom{


return paramFrom β€” paramValue;


}


ΠžΡ‡Π΅Π½ΡŒ просто, ΠΏΡ€Π°Π²Π΄Π°? Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ этот ΠΊΠΎΠ΄ Objective-C Π² ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ языка C, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π° шаг ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ нас ΠΊ пониманию синтаксиса Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:


NSInteger subtract(NSInteger paramValue, NSInteger paramFrom){


return paramFrom β€” paramValue;


}


Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, синтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° C Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ синтаксиса Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° языкС Objective-C. Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:


NSInteger (^subtract)(NSInteger, NSInteger) =

^(NSInteger paramValue, NSInteger paramFrom){


return paramFrom β€” paramValue;


};


ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ описанию синтаксиса Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Π΅Ρ‰Π΅ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ функция Π½Π° языкС C, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° NSUInteger (Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ строку Ρ‚ΠΈΠΏΠ° NSString. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ данная функция рСализуСтся Π½Π° C:


NSString* intToString (NSUInteger paramInteger){


return [NSString stringWithFormat:@"%lu",

(unsigned long)paramInteger];


}

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ систСмонСзависимых ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° языкС Objective-C, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с String Programming Guide in the iOS Developer Library (Руководство ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ строк Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° iOS). АдрСс Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π° сайтС Apple: https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html.

Π‘Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, эквивалСнтный Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка C, ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 7.1.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 7.1. ΠžΠ±Ρ€Π°Π·Π΅Ρ† Π±Π»ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ


NSString* (^intToString)(NSUInteger) = ^(NSUInteger paramInteger){

NSString *result = [NSString stringWithFormat:@"%lu",

(unsigned long)paramInteger];


return result;

};


ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ нСзависимый Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” это Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ void ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:


void (^simpleBlock)(void) = ^{

/* Π—Π΄Π΅ΡΡŒ рСализуСтся Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. */

};


Π‘Π»ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° языкС C. Если Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ΠΈΡ… Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ C. Π›ΡŽΠ±ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° языкС C. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


NSString* (^intToString)(NSUInteger) = ^(NSUInteger paramInteger){

NSString *result = [NSString stringWithFormat:@"%lu",

(unsigned long)paramInteger];

return result;

};


β€” (void) callIntToString{


NSString *string = intToString(10);

NSLog(@"string = %@", string);


}


ΠœΠ΅Ρ‚ΠΎΠ΄ callIntToString языка Objective-C Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ intToString, пСрСдавая этому Π±Π»ΠΎΠΊΠΎΠ²ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π² качСствС СдинствСнного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10 ΠΈ помСщая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ string.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ нСзависимых Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, рассмотрим ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ языка Objective-C. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ смысл ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ±Π΅Π³Π½ΡƒΡ‚ΡŒ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ абстракциям.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Objective-C, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π»ΠΎΠ΅ число ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ происходит Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠœΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число Π² качСствС Π²Π²ΠΎΠ΄Π° ΠΈ строка Π² качСствС Π²Ρ‹Π²ΠΎΠ΄Π°, Π½ΠΎ сам процСсс прСобразования ΠΏΠΎΡ€ΡƒΡ‡ΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠ²ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ β€” Π° этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ Ρ†Π΅Π»ΠΎΠ΅ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅.

Для Π±Π»ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ intToString, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 7.1. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° языкС Objective-C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число, Π° Π² качСствС Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° β€” Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π‘ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° всС просто, Π½ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ относится Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ intToString? Π‘Π½Π°Ρ‡Π°Π»Π° опрСдСляСм псСвдоним сигнатуры Π±Π»ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° intToString (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова typedef) ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ сообщаСм компилятору, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

typedef NSString* (^IntToStringConverter)(NSUInteger paramInteger);

ОбъявлСниС typedef просто сообщаСт компилятору, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ†Π΅Π»ΠΎΠ΅ число ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ строку, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ IntToStringConverter. Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠΉΠ΄Π΅ΠΌ дальшС ΠΈ напишСм ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° Objective-C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Ρ†Π΅Π»ΠΎΠ΅ число, ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° IntToStringConverter: