[NSArray containsObject:] vs [NSSet containsObject:]

Dzisiejszy post nie jest wyłącznie związany z Objective-C i iOS. Chcę jedynie zwrócić uwagę na pewien drobny szczegół w pisaniu aplikacji. Szczegół, który łatwo przeoczyć i zrobić coś bardzo nieefektywnie.

Sam miałem możliwość poprawienia czegoś takiego w jednym z projektów jakiś czas temu.  Dziś przyszła pora na podzielenie się tym i zwrócenie uwagi na myślenie. To ważne.

Załóżmy, że mamy do przeszukania i do znalezienia 1 unikalny rekord ze zbioru około 70 tysięcy 25 znakowych łańcuchów znaków.  Jak to zrobić? Opcji jest sporo. Dziś pokażę różnicę w 2 różnych podejściach używając gotowych metod containsObject z kolekcji NSArray i NSSet. Kolekcje bardzo często używane w wielu aplikacjach mobilnych.

Czytaj dalej [NSArray containsObject:] vs [NSSet containsObject:]

Jak przyśpieszyć CoreData?

Ten post to notatka, aby nie zgubić przydatnego linka do listy 8 rzeczy, których weryfikacja pozwoli nam na upewnienie się, że aplikacja mobilna wykorzystuje CoreData we w miarę optymalny sposób:

http://agilemd.ghost.io/2015/02/02/optimizing-coredata-fetches/

Polecam przeczytać zalinkowany artykuł.

EDIT:

Polecam też zapoznanie się z dokumentacją od Apple, nt wydaności CoreData. Dosyć dobrze opisują pewne zagadnienia i sztuczki jakie można zrobić, żeby coś przyśpieszyć pod tym linkiem.

Wzorce projektowe: Fabryka Abstrakcyjna (Abstract Factory) w Objective-C

W poprzednim poście pokazałem implementację wzorca Fabryka Abstrakcyjna (ang. Abstract Factory) w języku Swift. Dziś pora na odpowiednik w Objective-C.

Opis wzorcahttp://pl.wikipedia.org/wiki/Fabryka_abstrakcyjna_(wzorzec_projektowy)

Czytaj dalej Wzorce projektowe: Fabryka Abstrakcyjna (Abstract Factory) w Objective-C

Wzorce projektowe: Budowniczy (Builder) w Objective-C

Budowniczy (ang. Builder) to wzorzec pomagający nam w tworzeniu skomplikowanych obiektów. Poprzednio pokazałem implementację w Swift. Dziś jest kolaj na kod w Objective-C.

Opis wzorcahttp://pl.wikipedia.org/wiki/Budowniczy_(wzorzec_projektowy)

Czytaj dalej Wzorce projektowe: Budowniczy (Builder) w Objective-C

Wzorce projektowe: Singleton w Objective-C

Dziś kolej na Singleton w Objective-C. Poprzednio (w tym poście) pokazałem sposób na ten wzorzec napisany w języku Swift.

Opis wzorcahttp://pl.wikipedia.org/wiki/Singleton_(wzorzec_projektowy)

Czytaj dalej Wzorce projektowe: Singleton w Objective-C

Wzorce projektowe: Singleton w Swift

Na temat Singletona chyba każdy ma swoje własne zdanie. Dla jednych jest ulubionym wzorcem, a dla innych Singleton jest przez wiele osób uznawany jako antypattern. Prawda jak zwykle leży pewnie gdzieś po środku i jeśli używamy tego wzorca z głową, to architektura aplikacji nie powinna na tym ucierpieć.

Opis wzorcahttp://pl.wikipedia.org/wiki/Singleton_(wzorzec_projektowy)

Czytaj dalej Wzorce projektowe: Singleton w Swift

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.

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.

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.