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

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

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

β€’ ΠšΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ имя, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ БоглашСнию ΠΎΠ± имСнованиях ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Cocoa.

β€’ Π£ класса Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» интСрфСйса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ опрСдСляСтся интСрфСйс этого класса.

β€’ Π£ класса Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ рСализация, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ прописываСтС всС возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Β«ΠΎΠ±Π΅Ρ‰Π°Π»ΠΈΒ» ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ согласно интСрфСйсу класса.

NSObject β€” это ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ класс, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ практичСски всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ собираСмся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ класс ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Person Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» создан Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ запуск вашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ прилоТСния для iOSΒ» Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ этому классу Π΄Π²Π° свойства, firstName ΠΈ lastName, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ Ρ‚ΠΈΠΏΡƒ NSString. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс Person ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Xcode ΠΈ Π² мСню File (Π€Π°ΠΉΠ») Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ New-File (Новый— Π€Π°ΠΉΠ»).

2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ слСва, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ iOS, Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ Cocoa Touch. ПослС этого Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ элСмСнт Objective-C Class (Класс для Objective-C) ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Next (Π”Π°Π»Π΅Π΅).

3. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Class (Класс) Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя Person.

4. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Subclass of (Подкласс ΠΎΡ‚) Π²Π²Π΅Π΄ΠΈΡ‚Π΅ NSObject.

Когда ΡΠΏΡ€Π°Π²ΠΈΡ‚Π΅ΡΡŒ с этим, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Next (Π”Π°Π»Π΅Π΅). На Π΄Π°Π½Π½ΠΎΠΌ этапС Xcode ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π²Π°ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ этот Ρ„Π°ΠΉΠ». ΠŸΡ€ΠΎΡΡ‚ΠΎ сохранитС Π½ΠΎΠ²Ρ‹ΠΉ класс Π² Ρ‚ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π³Π΄Π΅ находятся ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ всС Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Ρ‹. Π­Ρ‚ΠΎ мСсто выбираСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Create (Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ) β€” ΠΈ Π΄Π΅Π»ΠΎ сдСлано.

ПослС этого Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°: Person.h ΠΈ Person.m. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» β€” это интСрфСйс вашСго класса Person, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Ρ„Π°ΠΉΠ» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого класса. Π’ Objective-C.h-Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌΠΈ. Π’ Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… Π²Ρ‹ опрСдСляСтС интСрфСйс ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π’.m-Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ сама рСализация класса.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» нашСго класса Person ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ для этого класса Π΄Π²Π° свойства, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏ NSString:


@interface Person: NSObject


@property (nonatomic, copy) NSString *firstName;

@property (nonatomic, copy) NSString *lastName;


@end


Как ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, свойства ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² особом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС.

1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ свойства Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова @property.

2. Π—Π°Ρ‚Π΅ΠΌ слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ свойства. НСатомарныС (nonatomic) свойства Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ потокобСзопасными. О бСзопасности ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² Π³Π»Π°Π²Π΅ 14. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ свойств: assign, copy, weak, strong ΠΈΠ»ΠΈ unsafe_unretained. Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΈ ΠΎ Π½ΠΈΡ….

3. Π—Π°Ρ‚Π΅ΠΌ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для свойства, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ NSInteger ΠΈΠ»ΠΈ NSString.

4. ΠΠ°ΠΊΠΎΠ½Π΅Ρ†, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ имя для свойства. ИмСна свойств Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ рСкомСндациям Apple.

Как Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅, свойства ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Π’ΠΎΡ‚ ваТнСйшиС ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ.

strong β€” свойства этого Ρ‚ΠΈΠΏΠ° Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ врСмя исполнСния. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ экзСмплярами классов. Π˜Π½Ρ‹ΠΌΠΈ словами, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² свойствС Ρ‚ΠΈΠΏΠ° strong, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠΌ. МоТно ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹.

β€’ copy β€” Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ strong, Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ присваивания ΠΊ свойствам этого Ρ‚ΠΈΠΏΠ° срСда Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания. ΠžΠ±ΡŠΠ΅ΠΊΡ‚, находящийся Π² ΠΏΡ€Π°Π²ΠΎΠΉ части этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ NSCopying ΠΈΠ»ΠΈ NSMutableCopying.

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

β€’ unsafe_unretained β€” Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ assign.

β€’ weak β€” практичСски Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ assign, Π½ΠΎ с ΠΎΠ΄Π½ΠΈΠΌ большим ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, присвоСнный свойству Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, высвобоТдаСтся ΠΈΠ· памяти, срСда Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого свойства Π² nil.

Π˜Ρ‚Π°ΠΊ, Ρƒ нас Π΅ΡΡ‚ΡŒ класс Person с двумя свойствами, firstName ΠΈ lastName. ВСрнСмся ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° нашСго прилоТСния (AppDelegate.m) ΠΈ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Person:


#import Β«AppDelegate.hΒ»

#import Β«Person.hΒ»

@implementation AppDelegate


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


Person *person = [[Person alloc] init];


person.firstName = @"Steve";

person.lastName = @"Jobs";


self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ выдСляСм ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ наш экзСмпляр класса Person. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Π½ΠΎ Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ΠΊ классам с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²Β», ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π΄Π°Π»Π΅Π΅, ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ± этом ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ΠΊ классам с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” это ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоят классы. НапримСр, класс Person ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ логичСскиС возмоТности β€” ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ ΠΈΡ… ΠΊΠ°ΠΊ Β«Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΒ», Β«Π΄Ρ‹ΡˆΠ°Ρ‚ΡŒΒ», Β«Π΅ΡΡ‚ΡŒΒ» ΠΈ Β«ΠΏΠΈΡ‚ΡŒΒ». ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ β€” это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ стороной ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ. НапримСр, Π² ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΌ ΠΌΠΈΡ€Π΅ Ρƒ нашСго класса Person Π±Ρ‹Π» Π±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ walk. Но Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠ»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ walkingSpeed. Π­Ρ‚ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Π²Ρ‹ Π±Ρ‹ присвоили Ρ‚ΠΈΠΏ CGFloat. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π΄Ρ€ΡƒΠ³ΠΎΠΉ программист Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² вашСм классС, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, с ΠΊΠ°ΠΊΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ Person. Π’Ρ‹ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€ класса Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ скорости Ρ…ΠΎΠ΄ΡŒΠ±Ρ‹ Person. НС ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅, Ссли Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅ Β«ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ получаСтся». Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’ Π½Π΅ΠΌ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ класса Person, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ «Как ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ классы ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠΈΒ» Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°.


#import Β«Person.hΒ»


@implementation Person


β€” (void) walkAtKilometersPerHour:(CGFloat)paramSpeedKilometersPerHour{

/* Π·Π΄Π΅ΡΡŒ пишСм ΠΊΠΎΠ΄ для этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° */

}


β€” (void) runAt10KilometersPerHour{

/* Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ walk Π² нашСм собствСнном классС ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10 */

[self walkAtKilometersPerHour:10.0f];

}

@end


Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² языкС Objective-C ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ качСства.

1. ΠŸΡ€Π΅Ρ„икс ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ компилятору, являСтся Π»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ экзСмпляра (β€”) ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ класса (+). К ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ экзСмпляра ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ лишь послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ программист Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ экзСмпляр вашСго класса. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹Π·Π²Π°Π² Π΅Π³ΠΎ нСпосрСдствСнно ΠΈΠ· этого класса. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, Ссли Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд это каТСтся слоТным. Π’ этой ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ‹ рассмотрим многочислСнныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠΊΠ° просто слСдитС Π·Π° Ρ…ΠΎΠ΄ΠΎΠΌ рассказа.

2. Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… void. Π’Π°ΠΊ ΠΌΡ‹ сообщаСм компилятору, Ρ‡Ρ‚ΠΎ Π½Π΅ собираСмся Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

3. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², довольно ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСны.

4. Π‘писок ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈΠ΄ΡƒΡ‰ΠΈΡ… Π·Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:


β€” (void) singSong:(NSData *)paramSongData loudly:(BOOL)paramLoudly{

/* ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ здСсь, Π² этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Ρ‚Π°ΠΊΠΎΠ²Ρ‹:


paramSongData (для доступа ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ пСснС)

paramLoudly сообщаСт Π½Π°ΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΌΡ‹ ΠΏΠ΅Ρ‚ΡŒ пСсню Π³Ρ€ΠΎΠΌΠΊΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚

*/

}


Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ внСшним ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π’Π½Π΅ΡˆΠ½Π΅Π΅ имя Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ имя β€” это фактичСскоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ псСвдоним) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ внСшнСС имя ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° β€” singSong, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ β€” paramSongData. Π’Π½Π΅ΡˆΠ½Π΅Π΅ имя Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° β€” loudly, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ β€” paramLoudly. Имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ внСшниС ΠΈΠΌΠ΅Π½Π° Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² вмСстС ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, которая называСтся сСлСктором ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС сСлСктор упомянутого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄ singSong: loudly:. Как Π±ΡƒΠ΄Π΅Ρ‚ объяснСно Π΄Π°Π»Π΅Π΅ Π² этой ΠΊΠ½ΠΈΠ³Π΅, сСлСктор являСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² срСдС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния. НикакиС Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ класса Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ сСлСкторы.

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Person (Person.m) Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

walkAtKilometersPerHour:;