Wzorce projektowe w Objective-C i Swift.

Ostatnio zastanawiałem się, co dobrego mógłbym napisać, co warte byłoby wrzucenia na tego bloga, co byłoby związane za aplikacjami mobilnymi (najchętniej platformą iOS), a jednocześnie, co dałoby komuś korzyść i ułatwiło naukę lub kodowanie w pracy. Temat wzorców projektowych chodził już za mną jakiś czas. Jednak myślę, że nie do końca najlepszym pomysłem jest tworzyć kolejne teksty na tematy, które wyczerpano już dawno temu bez pokrycia ich w praktyce. Kompletnego materiału po polsku, na temat wzorców obiektowych stworzonych w Objective-C i Swift nie znalazłem. Dlatego zapraszam na cykl artykułów, w którym przedstawię implementację wzorców projektowych w 2 językach: Objective-C oraz Swift.

Startując od przyszłego tygodnia, postaram się, aby posty z wzorcami będą pojawiać się cyklicznie co tydzień lub co dwa tygodnie. Jako podstawę, wykorzystam spis wzorców z Wikipedii. Dla każdego wzorca postaram się przygotować przykład kodu źródłowego, projekt Xcode do ściągnięcia oraz krótkie omówienie. Postaram się nie odkrywać koła na nowo i nie poświęcać opisowi wzorca zbyt wiele miejsca. Przynajmniej takie założenia mam do tej serii postów. Moim celem nie jest w tej serii dogłębne omówienie wzorców, ich poprawne zastosowanie czy też przypadki użycia. Chciałbym jedynie dostarczyć użytecznych przykładów implementacji wzorców projektowych w językach Swift i Objective-C.

Wszystkie posty opisujące wzorce trafią ostatecznie na tę stronę Wzorce projektowe w Objective-C i Swift – Kompendium , która zbierze i pogrupuje je w przejrzysty sposób.

Mam nadzieję, że podany materiał przyda Cię czegoś nauczy lub usystematyzuje to co już wiesz. Jeżeli wiesz więcej niż podałem w postach, to zapraszam do komentowania i rozszerzania podanych informacji. Zapraszam za tydzień na pierwszy post z tej serii.

Życzę udanych projektów i dobrego kodu!

Memory Leaks vs. ARC. Uważaj na retain cycles.

Nie znam osoby, której by nie ucieszyło wprowadzenie ARCa w 2011 roku przez Apple. Ułatwiło to znacząco tworzenie stabilnych pamięciowo aplikacji na iOS. Niestety nie zwolniło z myślenia i nadal można popełnić błędy, które doprowadzą do wycieków pamięci w aplikacji. Dziwne, prawda? A jednak to prawda. W tym poście pokażę na co trzeba uważać.

Czytaj dalej Memory Leaks vs. ARC. Uważaj na retain cycles.

Tworzenie aplikacji mobilnych – zbiór przydatnych materiałów.

Aplikacje mobilne to temat, którym żyję już ładnych parę lat. W ciągu ostatniego roku co raz częściej na blogu pojawiały się posty powiązane z tym zagadnieniem. Postaram się, aby w przyszłości również takich artykułów nie zabrakło. Ciężko mi zadeklarować jakieś konkrety, więc zobaczymy co przyniesie przyszłość.

Patrząc na aktualne wpisy i na moją listę przyszłych postów, postanowiłem stworzyć stronę zbierającą w jednym miejscu linki do tekstów z bloga poruszających tematykę aplikacji mobilnych.

Strona Jak stworzyć aplikację mobilną? zawiera linki do istniejących postów i ich krótkie opisy. W przyszłości, w miarę dodawania nowych tekstów, będę umieszczał tam również linki do tych nowych materiałów. Mam nadzieję, że taki zabieg ułatwi dostęp do przydatnych treści i chociaż trochę ułatwi Ci życie.

Strona ta nie będzie zawierać treści bardzo skonkretyzowanych, specyficznych dla niszowej platformy, lecz postaram się, aby były tam jedynie ogólne informacje, które można użyć przy tworzeniu większości aplikacji.

Pozdrawiam.

WebStorm i Sublime Text – dobre narzędzia do tworzenia hybrydowych aplikacji mobilnych.

W tym poście postaram się napisać o dwóch dobrych narzędzia, z których korzystałem w czasie tworzenia hybrydowych aplikacji mobilnych: WebStorm i Sublime Text.

WebStorm logo SublimeText Logo

Czytaj dalej WebStorm i Sublime Text — dobre narzędzia do tworzenia hybrydowych aplikacji mobilnych.

Debugowanie mobilnych aplikacji hybrydowych.

Programowanie aplikacji mobilnych jest bardzo ciekawą pracą. Tematyka tworzonych programów jest bardzo szeroka. Zawsze znajdzie się jakiś interesujący i innowacyjny projekt, który przynajmniej w teorii powinień komuś ułatwić pracę, albo dostarczyć rozrywki.

Programowanie jednak nieodzownie wiążę się z debugowaniem. Nie ma programu bez błędów, zwłaszcza w trakcie jego rozwijania. Aplikacje natywne debuguje się bardzo, bardzo prosto, tzn. bardzo prosto korzysta sie z dostępnych narzędzi, bo sam proces może być długi jeśli mamy akurat do czynienia z jakimś ciężkim problemem. Zarówno na platformie iOS jak i Android, wystarczy aplikację uruchomić w trybie debug i z łatwością możemy analizować działanie programu linijka po linijce. Z aplikacjami hybrydowymi nie jest już tak różowo. Dziś kilka słów na temat narzędzi, jakie są do dyspozycji programisty hybrydowych aplikacji mobilnych.

Czytaj dalej Debugowanie mobilnych aplikacji hybrydowych.

Tworzenie Aplikacji Mobilnych – Roadmap

Przed stworzeniem aplikacji mobilnej, należy podjąć szereg decyzji, które niosą ze sobą określone skutki. Na tym blogu starałem się przedstawić nieco informacji na temat tworzenia aplikacji mobilnych w taki sposób, by podjęcie niektórych decyzji było łatwiejsze. Chcąc zapoznać się z tymi artykułami polecam taką oto kolejność.

  1. HTML5, Aplikacja Natywna, czy Hybryda?
    W tym artykule: Tworzenie Aplikacji Mobilnych – 3 możliwości: HTML5, natywna, czy hybryda?, przedstawiam argumenty za i przeciw do każdej z opcji. W zależności od Twoich wymagań, budżetu potrzeb – wybierz właściwą dla siebie technologię.
  2. Sencha Touch to jeden z większych frameworków, który może służyć za podstawę aplikacji HTML5 lub hybrydowej.  W artykule:  Sencha Touch – hybrydowe aplikacje mobilne starałem się pokazać ideę frameworka, jego cechy szczególne i wyróżniające od innych bibliotek. Wspominam także o projekcie Cordova – który jest warstwą pośredniczącą między aplikacją HTML5 a rządzeniem mobilnym.
  3. Baza danych w aplikacji mobilnej jest komponentem wręcz niezbędnym. W tym poście: SmartStore – Mobilna baza danych na sterydach? Czy ciekawostka informatyczna? staram się przedstawić cechy charakterystyczne i możliwości Smartstore’a – czyli bazy danych NoSQL zaprojektowanej specjalnie na potrzeby aplikacji mobilnych biznesowych.
  4. W artykule iBeacons – informacja kontekstowa dla aplikacji mobilnych. opisuję jak naszej aplikacji możemy zapewnić informację na temat jej położenia (sąsiedztwa) przy pomocy iBeaconów. Wyjaśniam po krótce co to jest i jak działa.

Mam nadzieję, że dzięki powyższym artykułom poszerzyłeś swoją wiedzę i uświadomiłeś sobie coś, o czym do tej pory nie miałaś pojęcia. Chciałbym, abyś po lekturze tych tekstów był w stanie świadomie wybrać coś dla siebie, coś co odpowiada potrzebom Twoim  lub Twojego biznesu.

Jeżeli jest coś, czego nie wiesz, zapytaj w komentarzu. Jeśli jestem w stanie, to postaram Ci się jakoś pomóc, a przynajmniej nakierować.

 


A oto przydatne artykuły, które powstały już po publikacji tego posta:

  1. Debugowanie mobilnych aplikacji hybrydowych.

iBeacons – informacja kontekstowa dla aplikacji mobilnych.

Co to jest iBeacon i jak działa?

iBeacon to urządzenie proste. Nie tyle technicznie, ale jeśli chodzi o  zasadę działania. Jego jedynym zadaniem jest wysyłanie swojego UUID (Universally Unique IDentifier), oraz dwóch liczb Major i Minor, co pewien zdefiniowany z góry czas, z pewną zdefiniowaną siłą sygnału (co ma bezpośredni wpływ również na obszar w którym taki sygnał da się wykryć).

iBeacon

 

Jeśli chodzi o elektronikę, to jest to już nieco bardziej skomplikowany temat. Urządzenie na pewno musi posiadać jakieś zasilanie (najczęściej bateria), nadajnik i odbiornik BLE (Bluetooth Low Energy), pewnie jakiś mikroprocesor i pamięć do obsługi mini systemu operacyjnego, który przechowuje konfigurację nadajnika, zarządza nadawaniem sygnału, czy też obsługuje różne inne czujniki wpięte w iBeacona, np czujnik temperatury, żyroskop, itd.

Czytaj dalej iBeacons — informacja kontekstowa dla aplikacji mobilnych.

SmartStore – Mobilna baza danych na sterydach? Czy ciekawostka informatyczna?

SmartStore? Co to jest?

Baza danych SmartStore została stworzona przez firmę Salesforce i udostępniona w ich Salesforce Mobile SDK. Jest to baza danych typu NoSQL, a jak to firma Salesforce się chwali, jest to jedyna baza typu NoSQL, która jest szyfrowana i która jest dostępna na platformy iOS i Android. Tę bazę danych możemy wykorzystać zarówno w aplikacjach natywnych, jak i tych hybrydowych. Firma Salesforce, zadbała o to, aby wdrożenie i wykorzystanie tego komponentu nie stanowiło większęgo problemu.

Zapytasz co to NoSQL? To grupa baz danych umożliwiająca zapis danych w postaci innej niż tabelaryczna, usystematyzowana struktura (np klucz-wartość, obiekt, dokument), ze sztywnymi relacjami i ograniczeniami. Czy są lepsze niż bazy danych typu SQL? I tak i nie. W pewnych obszarach mają przewagę, a w innych są słabsze. Po prostu do każdego zastosowania, trzeba wybrać to co ma sens.

Dlaczego musisz używać bazy danych typu NoSQL w aplikacjach mobilnych? Nie musisz, ale możesz. Po prostu, analizujesz za i przeciw i wybierasz to co dla Ciebie najlepsze. Oprócz SmartStore’a zapewne masz jeszcze do dyspozycji tradycyjnego SQLite’a. O którym z resztą wspomnę jeszcze za moment.

Uwaga: wszystkie poniższe przykładu zakładają, że pracujemy z aplikacją hybrydową, gdzie większość biznes logiki znajduje się w części HTML5 + JavaScript, natomiast natywna cześć aplikacji, jedynie dostarcza pewnych usług/komponentów dla części webowej. Przykłady są rozpisane w języku JavaScript i poza jawną zależnością od komponentu Cordova (SmartStore wymaga tego w aplikacji), nie ma żadnych innych wymogów. Czyli Twoja aplikacjia hybrydowa może być oparta o jQuery Mobile, Sencha Touch, albo cokolwiek innego z czym czujesz się dobrze.

Czytaj dalej SmartStore — Mobilna baza danych na sterydach? Czy ciekawostka informatyczna?

Sencha Touch – hybrydowe aplikacje mobilne.

W artykule Tworzenie Aplikacji Mobilnych – 3 możliwości:  HTML5, natywna, hybryda opisywałem 3 możliwe podejścia do tematu implementacji aplikacji mobilnych. Dzisiaj napiszę kilka słów o Sencha Touch – frameworku dla języka JavaScript, który może służyć do implementacji nie tylko małych, ale także dużych i bardzo skomplikowanych aplikacji mobilnych. Sam framework Sencha Touch może być też użyty do stworzenia aplikacji HTML5, bez komponentów hybrydowych, jednakże wg mnie sama idea aplikacji stricte HTML5 jest na tyle mało praktyczna, że nie chce poświęcać jej swojej uwagi ani Twojego czasu.

Czytaj dalej Sencha Touch — hybrydowe aplikacje mobilne.

Tworzenie Aplikacji Mobilnych – 3 możliwości: HTML5, natywna, czy hybryda?

Tworząc aplikację mobilną musimy odpowiedzieć na wiele pytań: co ma robić?, jak ma wyglądać?, jak użytkownik ma się w niej poruszać, itp. itd.? Wśród tych pytań są również te związane z technologią. Teoretycznie wszystko niby jest proste Android to Java, iOS to Objective-C. Niestety kilka lat temu powstała idea aplikacji mobilnych opartych o HTML5. Trzeba przyznać, że trochę ta idea namieszała w porządku i nie da się koło tej opcji przejść obojętnie. Powiem więcej, trzeba przeanalizować i przekalkulować, czy jest sens wykorzystać to, co daje nam ta możliwość.

Aplikacja Mobilna: HTML5 czy natywna?

Czytaj dalej Tworzenie Aplikacji Mobilnych — 3 możliwości: HTML5, natywna, czy hybryda?