субота, 3 березня 2012 р.

Objective-C(middle level)@"#define COOL_NSLOG"

Привіт! Давно від мене нічого не було чути, проте, я трошки став обізнанішим і сьогодні хотів поділитись однією з фіч. Вивід в лог для нормального програміста - це дуже буденна справа, ібо "No money, no honey" не вивів в лог - не знаєш нічого, проте, як вивявляється цей "honey" дуже ресурсомісткий. На думку включення/виключення логу мене наштовхнув випадок, що нещодавно трапився на роботі, коли на одному проекті після виключення логу час виконання знизився на 1-2 порядки. До того ж, частіше за все стандартним логом є показ того, що в класі А стартував на виконання метод methodB. І ти починаєш лізти в назву класу, "копіпастиш" його назву, потім додаєш назву методу і виходить в тебе щось на кшталкт 
NSLog(@"figure#draw#start");
 а потім в кінці методу, якщо все гуд відповідно
NSLog(@"figure#draw#finish");     
То через десятків два такого мартишковводу поченаєш задумуватися, ну не може ж бути, що немає виходу для такої простої штуки. В нагоді мені стала книжка: 

Beginning iPhone 4 Development Exploring the IOS SDK (існує нове видання Beginning iPhone 5 Development Exploring the IOS SDK )

читаючи дане чудове творіння наткнувся на таку класну річ: 
NSStringFromSelector(_cmd);

понеділок, 19 грудня 2011 р.

Objective-С (middle level) Вступ до патернів. Prototype (прототип;зразок; модель; еталон)

Стаття ще не дописана.....(preview)

Перший патерн з яким я зіткнувся, це -  Prototype. смисл його заключається в тому, що частіше за все зробити копію певного об'єкту, є громіздким процесом, тому для вирішення цієї проблеми був розроблений вище згаданий патерн. 

THE PROTOTYPE PATTERN: Specify the kinds of objects to create using a prototypical instance,
and create new objects by copying this prototype.*
* The original definition appeared in Design Patterns, by the “Gang of Four” (Addison-Wesley,1994).



Застосовується в випадках:
Коли нам необхідно створити об'єкти, незалежно від того, що це за об'єкти і як вони створюються.
Класам задаються значення під час виконання програми.
Коли нам не потріба ієрархія  фабрик до відповідної ієрархії об'єктів.
Коли різниця між декільками об'єктами всього в декількох значеннях, доцільніше клонувати (clone) відповідну кількість прототипів, ніж ініціалізувати їх і змінювати потім.
При роботі з класами, які містять в якості полів інші підкласи, тоді краще також клонувати і змінити їхні значення.
Якщо говорити про глибоке копіювання, то його доцільним можна вважати:
Коли необхідно зробити копію всього об"єкту і заархівувати його.
Коли необхідно видати чійсь код, як образець патерну, щоб потім застосовувати його в необхідних місцях програми.
Що до першого випадку, то необхідно уважно слідкувати за тим щоб в  момент коли робиться копія для архівування, об'єкт з якого робиться відбиток не модифікувався.

неділя, 18 грудня 2011 р.

Objective-С (middle level) Вступ до патернів.

Цей цикл статтей розрахований на людей, які вже добре обізнані з Objective-С (не впевнений, що на даному етапі я можу про себе таке сказати, але мені завжди було цікаво ознайомитись з патернами).
ПіонЕрами в цій справі була "фантастична четвірка" , "Gang of Four" - банда чотирьох. Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma,
Richard Helm, Ralph Johnson, and John Vlissides (Addison-Wesley Professional, 1994) http://en.wikipedia.org/wiki/Design_Patterns .


Своій погляд стосовно даної тематики я зупинив на Carlo Chung (Apress) - Pro Objective-C Design Patterns for iOS - 2011.
Що ж таке патерн? На даний момент я зрозумів, що часто приходиться писати багато схожого коду, і в розробників виникає свого роду Déjà-vu.
Тому для вирішення практично схожих задач створили свого роду узагальненний розв'язок, який і носить назву патерн. Трактування "так собі", для отримання більш академічного гугл в поміч. 

Я впевнений, що при слові Déjà-vu, всі згадали "Матрицю": в певному розумінні там використовували поняття патерну, коли злий агент Сміт переписував код будинку використовуючи інші готові блоки... Були двері, нема дверей і потипу того, можливо брати Вачовські начитались страшних книжок по патернах, і їх як накрило гієною вогняною з ноликів і одиничок, як побачили вони силу сінглітону, ітератору, фабричого методу і єже з ним.  Чого коштують три матриці, "Асасін" та "Ніндзя асасін"?! Подивившись ці фільми, можна зрозуміти, що програмування з використанням патернів по різному може впливати на психіку і свідомість людей.  

неділя, 11 грудня 2011 р.

Objective-c та @"Перший об"єкт..."

Давно, я вже нічого не писав, в своєму блозі. Проте з'явилася вільна хвилинка і я вирішив, написати трошки коду аби зацікавленість не падал з дня в день. 
Перекладаючи назву Objective-C, стає, ясно практично кожній людині, яка хоч якось пересікалась з англійською мовою або просто з програмуванням, що мова об'єктно орієнтована. Тому прийшов час показати, як з себе виглядає, найпростіший об'єкт. 
Для роботи нам будуть необхідні 3 файли:
Person.h - інтерфейс
Person.m - реалізація
start.m - створення об'єкту.
Внизу описано простий клас, який в собі містить інформацію, про людину, яка закінчила школу. А саме ім'я, прізвище, місто, назва школи та рік народження.

неділя, 13 листопада 2011 р.

Objective-c та @"Танцуй для меня, только для меня танцуй..."

І нехай мене пробачать всі, хто читає цей блог заради української мови, але по іншому дану статтю я назвати не міг, так як переживши певний тернистий шлях, в голову приходить тільки така назва. Ті хто, хоч якось слідкує за виходом нових статей..а такі є.., могли подумати, що я здався і перестав писати на дану тематику. Насправді причина була в іншому. До недавнього часу компілятор, яким я користуюсь під убунтою, не міг підтримувати більшу частину функціоналу, з якою можна працювати в Xcoder. На банальне @synthesize чи @property він готовий був плюватись далі ніж бачить, а при спробі скомпілить, відповідав "Сорі дядьку, бананів не буде!" Проте нещодавно була випущена версія gcc 4.6.2, яка "навчилася" більш стабільно себе поводити, і розуміти не малий набір фраз на Objective-c 2.0. Радості в мене був повний stack overflow, але коли я почав розбиратися, то зрозумів, що цю статтю я ще не скоро напишу.

неділя, 9 жовтня 2011 р.

Objective-c та @"А за м'ютебл, м'ютебл, а за м'ютебл, м'ютебл, а за м'ютебл, м'ютебл, ось і кінчився хеш, ні ні ні, зачекай, ось і ще один м'ютебл, а за м'ютебл, м'ютебл... "

Перед тим, як почати говорити про об'єкти, я вирішив, що дуже важливо буде поговорити хоч трішки про масиви, строки та хеш-таблиці. Багато хто може запитати, що за дурнувата назва статті, зараз спробую все пояснити.
Objective-c має такі класи: 
NSString (робота з строками), NSInteger , NSNumber(робота з числами в загальному), NSArray(робота з масивами), NSDictionary(робота з хешом). 
 NSDictionary містить набір ключів та значить, які прив'язуюються до цього ключа, впринципі це невеличка база данних, причому до ключа можна прив"язувать все завгодно, чого тільки душа забажає.

середа, 21 вересня 2011 р.

Objective-c та @"Вивід в лог"



Перед тим, як перейти до чогось нового, пропоную Вашій увазі книжечку, яка видніється зліва. Якщо в програмуванні Ви не можете відрізнить:++і; від i++;, то ця книга стане в пригоді (є переклад російською мовою). Не треба сильно лякатись слова "Xcoder", так iPhone application  Ви не напишете, але деякі ази зможете відчуть.