В черговий раз пишу після тривалої перерви, і вкотре кажу собі, що потрібно зробити блоґ основним майданчиком для думок, ідеї та пам’яток собі й людям на майбутнє.
Цього разу причина написання посту проста — я вкотре змінив сферу діяльності і повернув життя у кардинально новий напрям — розробку під iOS, а можливо, в майбутньому і під Mac OS. В цей момент якраз минає 60 днів з початку стажування iOS-девелопером у Petcube. І цей пост я пишу більше для себе як пам’ятку про те, чому я встиг навчитись за ці 2 місяці.
До початку стажування у Petcube я протягом року у вільний час вчив Objective-C та основи розробки під iOS, але все ж ці 2 місяці інтенсивної роботи виявилися просто безцінними.
Можливо, у майбутньому я розкрию детальніше кожен з пунктів, а тут просто їх перерахую:
- Memory management: Manual Reference Counting vs ARC.
- Що таке @property і з чим його їдять. Навчився майже на автоматі писати геттери і сеттери при ручному управлінні. (Зараз ручне управління пам’яттю майже не використовується, але розібратися варто, щоб знати, що “під капотом”).
- Foundation Framework — робота з класами та об’єктами NSString, NSNumber, NSValue, NSArray, NSDictionary, NSURL, NSData і т.д.
- UIKit – робота з інтерфейсом. Створення інтерфейсу як програмно так і в Interface Builder. Тут набрався досвіду з усіма основними об’єктами та елементами: UILabel, UIButton, UIControl (робив кастомний контрол), UIPickerView, UITextView, UISlider, UIImageView, UISegmentedControl і т.д.
- Робота з UIViewController: створював власні контроллери під різні потреби. Тут є досвід з Auto layout як з коду так і з Interface Builder.
- UITableView – великий та цікавий клас. Використовується практично всюди, а я його ще й юзаю у своїх словниках. Тут цікавий сам паттерн, делегатські методи і т.д. Досвіду набрався по вуха, створював власний індекс для таблиці в якому одночасно є односимвольні літери та двосимвольні (наприклад: “A”, “B”, “CH”).
Також сортування таблиці, оптимізація пам’яті під чапс динамічного створення комірок (cell). - Делегати та протоколи. Дуже цікавий паттерн, який перші дні не піддавався, а потім все виявилося дуже просто і очевидно. Головний принцип: створення у потрібному мені класі делегатського протоколу, з оголошенням методів. А в іншому класі, який стає делегатом першого — імплементація вищевказаних методів. Все просто 🙂 Такий паттер часто використовується, коли нам треба лише частково скористатися методами чужого класу, але немає потреби його повністю наслідувати.
- NSNotifications – спочатку теж було складно як і з делегатами, але в результаті теж вийшло просто. Нотіфікейшени використовуються лише для того, щоб сповіщати об’єктів-слухачів про події, які вони слухають. Наприклад, UITableViewController слухає нотіфікейшени про зміну об’єкту CreditCard і якщо така зміна відбувається — одразу ж оновлює в себе дані про цю кредитну картку. Дуже зручна річ ці NSNotifications.
- Core Animation та View Animation – тут я навправлявся досхочу. Робив CABasicAnimation, CAKeyFrameAnimation, і у drawRect, і у CAShapeLayer і прості [UIView animationWithDelay…]; Найцікавіший момент: анімація лайку та анлайку з пульсацією та розбиттям серця.
- Quartz drawing – робота з різними кривими безьє, їх анімація, як проста так і CATransform3DMakeAffineTransform. Досвід малювання кодом в мене вже був на основі мови Processing.
- UIGestureRecognizer – робота з жестами на tap, pan, touch, swipe і т.д. Реагування на різні типи жестів.
- Добряче прокачав скіл по роботі з Git.
Якщо коротко, то це все на сьогодні, далі буду розкривати тему.
І головне. Всіх цих знань у такій кількості та систематизованій формі не було б в моїй голові без допомоги, нагляду, контролю і код-рев’ю мого iOS-наставника, Alex Shpuk. Дякую, вчителю! 🙂
P.S. А ще ж Apple нещодавно випустила Swift, коли його все вчити?
P.P.S. Попереду ще 2 місяці навчання і стажування. За цей період я маю навчитися програмувати, що завгодно навіть, якщо мене піднімуть серед ночі 🙂
14.06.2014 — 17:25
Очень внушительный списочек получился как для 2 месяцев 🙂
Keep mooving, man!)
14.06.2014 — 19:44
Так, список серйозний, через 8 тижнів планую написати ще один не менший 🙂
Дякую за науку! 🙂