[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:]

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

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 – 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?

Objective-C – jakość kodu i coding guidelines.

Komercyjne projekty programistyczne realizowane w 1 osobę nie są czymś częstym w dzisiejszym świecie. Sporo klientów chce czegoś na wczoraj, w jak najlepszej jakości. Żeby dostarczyć dobrej jakości oprogramowanie, tworzone przez zespół, należy stosować wiele środków. Projekt musi na samym początku mieć dobrze zdefiniowane wymagania, musi być dobrze i w miarę szczegółowo zdefiniowany i zaplanowany. Na końcową jakość wpływ ma też bardzo wiele czynników. Dziś chciałem poruszyć 1 z nich: coding guidelines.

Czytaj dalej Objective-C — jakość kodu i coding guidelines.

NARC – jak zapamiętać kiedy robić release na obiekcie?

Zarządzanie pamięcią, to nie jest prosty temat. To obszar w którym należy poruszać się ostrożnie i z dokładną wiedzą. Jakiś czas temy wpadłem na ten wpis na StackOverflow. Zapraszam do przeczytania całego wątku – zajmie chwilę a przy okazji powtórzysz sobie niezwykle ważny obszar programowania. Dla leniwych przytoczę tutaj:

Pamięć w Objective-C należy zwalniać (wywołać metodę release na obiekcie) wtedy, jeśli nasz kod wykonał jedną z operacji NARC na obiekcie. NARC to skrót od metod: New, Alloc, Retain, Copy. Proste. Zapamiętaj i używaj 🙂

Zapraszam także na stronę gdzie zebrałem więcej informacji nt zarządzania pamięcią w Objective-C i nie tylko.

UITextField – nie mogę kliknąć a jest widoczny. Opis problemu i rozwiązania, czyli jak działa Clip Subviews.

Jakiś czas temu pomogłem rozwiązać jeden problem związany z UITextField i ich konfiguracją w aplikacji.  W aplikacji iOS był pewien formualarz zawierający 2 kolumny UITextField wraz z labelkami. Te text fieldy po lewej stronie można było kliknąć i pojawiała się klawiatura, te po prawej niestety nie. Jaki był problem i gdzie była przyczyna takiego dziwnego zachowania? Rozwiązanie jak się okazało było bardzo proste, a o tym w dalszej części.

Czytaj dalej UITextField — nie mogę kliknąć a jest widoczny. Opis problemu i rozwiązania, czyli jak działa Clip Subviews.

Xcode Behaviors – bardzo użyteczne narzędzie

Różne rzeczy można powiedziec o IDE jakim jest Xcode. Pozytywne i negatywne. Mimo wielu zmian na lepsze, wciąż można by znaleźć wiele elementów tej aplikacji, które wymagają poprawki. Lecz nie o tym chciałem napisać. Dzisiaj kilka słów o możliwości konfiguracji zachowań Xcode, w zależności od pewnych zdarzeń, które nastąpią podczas developmentu aplikacji.

Czytaj dalej Xcode Behaviors — bardzo użyteczne narzędzie