• Nie Znaleziono Wyników

Pytanie 34: Jak obsługiwane jest zarządzanie pamięcią w systemie ios?

N/A
N/A
Protected

Academic year: 2022

Share "Pytanie 34: Jak obsługiwane jest zarządzanie pamięcią w systemie ios?"

Copied!
9
0
0

Pełen tekst

(1)

Pytanie 34: Jak obsługiwane jest zarządzanie pamięcią w systemie iOS?

Każdy programista iOS, który był w grze od dłuższego czasu, powinien swobodnie rozmawiać na ten temat. Słaba znajomość zarządzania pamięcią może prowadzić do wycieków pamięci, niskiej wydajności i rozczarowania menedżerów, inwestorów, programistów i użytkowników. Odpowiedź można rozpocząć od wskazania, że Swift stosuje automatyczne zliczanie referencji (ARC), które jest zasadniczo takie samo jak w Objective-C. Domyślnie wszystkie referencje są silnymi referencjami.

Mogą zatem wystąpić silne cykle odniesienia, co uniemożliwia ARC cofnięcie przydziału pamięci.

Można to rozwiązać za pomocą słabych referencji. Ta rozmowa może rozciągać się na mówienie o nieznanych referencjach. Nieznane odwołania są używane w wartościach, które zawsze oczekują, że będą inne niż zero, i dlatego muszą być zdefiniowane jako nieobowiązkowe. Innym możliwym aspektem rozmowy może być dyskusja o zamknięciu.

Pytanie 35: Co wiesz o singletonach? Gdzie byś użył, a gdzie nie?

Singleton to po prostu klasa, która pozwala tylko na jedną instancję. Nie możesz wznowić instancji klasy singleton. Jednym z powodów, który często pojawia się w Internecie, jest „klasa logowania”. W takim przypadku singleton może być użyty zamiast pojedynczej instancji klasy, ponieważ klasa rejestrująca zwykle musi być używana w kółko przez każdą klasę w projekcie.

Pytanie 36: Jak zazwyczaj pracujesz w sieci?

Ta rozmowa może być bardzo interesująca i ujawniać wiele wglądów w podejście dewelopera.

Deweloper powinien wymienić architektury, których używał i wzorce, na których się opiera. Mogą to być warstwy usług, MVVM, wiązanie danych interfejsu użytkownika, wstrzykiwanie zależności lub funkcjonalne programowanie reaktywne. Z jakich bibliotek korzysta programista? Programiści pochodzą z różnych środowisk i mogą korzystać z AFNetworking, ReactiveCocoa… W jaki sposób zapewnia on / ona możliwość zapisywania danych z sieci? Jaki jest proces od momentu kliknięcia przez użytkownika komponentu interfejsu użytkownika do momentu lokalnego przechowywania danych na urządzeniu? Jakie klasy są zaangażowane w wybraną architekturę? W jaki sposób programista przygotuje aplikację do użytku offline i czy podejmie się buforowania? Jak zdefiniowałby idealny interfejs API dla urządzeń mobilnych? Czy zna wszystkie metody HTTP (PUT, POST, GET, DELETE) oraz kiedy i jak ich użyje? Nie ma dobrych / złych odpowiedzi na poprzednie pytania. Stanowią raczej doskonałą okazję do dyskusji z doświadczonym potencjalnym współpracownikiem, który może ci również służyć, porównując własne procesy z potencjalnym pracodawcą.

Pytanie 37: Jak pobrać JSON z serwera WWW, serializować i zapisać w lokalnej pamięci?

To pytanie pochodzi częściowo z poprzedniego. Deweloper mógł tutaj mówić o frameworkach, których można by użyć. NSJSONSerialization to platforma dostarczana przez Apple, ale ma pewne błędy i ograniczenia. W szczególności występują pewne problemy z sprawdzaniem poprawności i konwersją danych. Jeszcze lepszą odpowiedzią byłoby wspomnieć o bibliotekach stron trzecich (myśląc tutaj o ObjectMapper lub Mantle). Ponadto istotna byłaby dyskusja na temat logicznego rozdzielenia procesu JSON na jednostkę logiczną i jednostkę logiczną na pamięć.

Pytanie 38: Jakie wzorce projektowe znasz w iOS i których używasz?

Każdy programista, z którym przeprowadza się wywiad, powinien wiedzieć o MVC. To jest paradygmat, na którym zbudowano iOS. Im więcej stażu ma programista, tym więcej ram będzie w stanie omówić.

Tutaj możesz dołączyć MVVM, który pomaga programistom w zapobieganiu masowym kontrolerom widoku. Deweloper może również wyjaśnić różnice, zalety i wady różnych platform.

(2)

Pytanie 39: Jak radzisz sobie z zadaniami asynchronicznymi?

W celu obsługi zadań asynchronicznych iOS zapewnia mechanizm znany jako Grand Central Dispatch.

Aby tego użyć, musisz utworzyć kolejkę (w tym kontekście jest to podobne do wątku) i przekazać blok do metody dispatch_async(), która zostanie wykonana w tle. Jednak w iOS można zastosować kilka innych mechanizmów.

• Callbacki

• Globalne kolejki

• Pamięć

• Wiele zadań / bloków

Deweloper może chcieć omówić, kiedy można zastosować każdą z tych alternatyw oraz jakie są jej zalety i wady.

Pytanie 40: Czym jest kontekst obiektu zarządzanego i jaką oferuje funkcjonalność?

Kontekst obiektu zarządzanego jest reprezentowany przez instancję klasy NSManagedObjectContext.

Kontekst obiektu zarządzanego można rozumieć jako tymczasowy notatnik dla powiązanej kolekcji obiektów. Ten zestaw obiektów reprezentuje spójny widok kilku trwałych sklepów. Pojedyncza instancja obiektu zarządzanego istnieje w jednym i tylko jednym kontekście, ale wiele kopii obiektu może istnieć w różnych kontekstach. Kluczowa funkcjonalność zapewniana przez kontekst obiektu zarządzanego obejmuje:

• Zarządzanie cyklem życia

• Powiadomienia

• Konkurencja

Pytanie 41: Czy możesz porównać i skontrastować różne sposoby osiągnięcia współbieżności w OS X i iOS?

Istnieją zasadniczo trzy sposoby osiągnięcia współbieżności w systemie iOS.

• Używanie wątków

• Wysyłaj kolejki

• Kolejki operacji

Jeśli potrafisz je wszystkie zidentyfikować, możesz także omówić ich różne aspekty i różnice. Problem z wątkami polega na tym, że odpowiedzialność za zaprojektowanie skalowalnego systemu spoczywa na deweloperze. Musi zdecydować, ile wątków musi zostać utworzonych, i zadbać o ręczne dostosowanie tej liczby w zmieniających się warunkach. Za pomocą GCD odpowiedzialność za zarządzanie jest delegowana na poziom systemu. Zadaniem programisty jest zdefiniowanie zadania do wykonania i dodanie go do kolejki wysyłki. To ogólnie może ułatwić życie. Kolejka operacji jest odpowiednikiem Cocoa równoczesnej kolejki wysyłki i jest implementowana przez klasę NSOperationQueue. W przeciwieństwie do kolejek wysyłkowych, kolejki operacji nie ograniczają się do wykonywania zadań w kolejności FIFO i obsługują tworzenie złożonych wykresów komend wykonawczych dla twoich zadań.

Pytanie 42: Jakie są różne tryby tła w iOS?

(3)

Oto możliwe tryby tła dostępne w iOS:

• Lay audio: aplikacja może odtwarzać dźwięk w tle.

• Aktualizacje lokalizacji: wywoływanie jest uruchamiane za każdym razem, gdy zmienia się lokalizacja urządzenia.

• Wykonywanie zadań o skończonej długości: jest to ogólny przypadek „tła” w systemie iOS, w którym aplikacja działa i wykonuje operację.

• Voice over IP (VoIP): Aplikacja działa i wykonuje VoIP w tle

Pytanie 43: Czy możesz wymienić i wyjaśnić różne typy stanów aplikacji na iOS?

• Nie działa: Aplikacja nie została uruchomiona lub działała, ale została zakończona przez system.

• Nieaktywny: aplikacja działa na pierwszym planie, ale obecnie nie odbiera zdarzeń. (Może jednak wykonywać inny kod.) Aplikacja zwykle pozostaje w tym stanie tylko przez krótki czas, ponieważ przechodzi w inny stan.

• Aktywny: aplikacja działa na pierwszym planie i odbiera zdarzenia. Jest to normalny tryb dla aplikacji na pierwszym planie.

• Tło: aplikacja działa w tle i wykonuje kod. Większość aplikacji przechodzi na krótko w ten stan w drodze do zawieszenia. Jednak aplikacja, która żąda dodatkowego czasu wykonania, może pozostawać w tym stanie przez pewien czas. Ponadto aplikacja uruchamiana bezpośrednio w tle przechodzi w ten stan zamiast w stan nieaktywny.

• Zawieszony: aplikacja działa w tle, ale nie wykonuje kodu. System automatycznie przenosi aplikacje do tego stanu i nie powiadamia ich wcześniej. Po zawieszeniu aplikacja pozostaje w pamięci, ale nie wykonuje żadnego kodu. Gdy wystąpi stan niskiego poziomu pamięci, system może wyczyścić zawieszone aplikacje bez powiadomienia, aby uzyskać więcej miejsca na aplikację na pierwszym planie.

Pytanie 44: Jakie są różnice między kopiowaniem a zatrzymywaniem?

W ustawieniu ogólnym zatrzymanie obiektu zwiększy jego liczbę zatrzymań o jeden. Pomoże to utrzymać obiekt w pamięci i zapobiegnie jego wysadzeniu. Oznacza to, że jeśli tylko utrzymasz wersję obiektu, udostępniasz tę kopię każdemu, kto ci ją przekazał. Kopiowanie obiektu, niezależnie od tego, jak to robisz, powinno stworzyć inny obiekt ze zduplikowanymi wartościami. Pomyśl o tym jak o klonie.

Nie dzielisz klonu z tym, kto ci go przekazał. W szczególności w przypadku NSStrings możesz nie być w stanie założyć, że ktokolwiek daje ci NSString, naprawdę daje ci NSString. Ktoś może przekazać ci podklasę (w tym przypadku NSMutableString), co oznacza, że może potencjalnie zmodyfikować wartości pod przykryciem. Jeśli twoja aplikacja zależy od przekazanej wartości, a ktoś ją zmieni, możesz mieć problemy.

Pytanie 45: Co może wymusić zniszczenie obiektu za pomocą ARC?

Wystarczy ustawić zmienne odnoszące się do tych obiektów na zero. Kompilator następnie zwolni obiekty w tym momencie i zostaną zniszczone, jeśli nie będzie innych silnych odniesień do nich.

Pytanie 46: Co się dzieje, gdy wywołujesz metodę na wskaźniku zero?

Wiadomość wysłana do zerowego obiektu jest całkowicie akceptowalna w Objective-C. Jest to traktowane jako no-op. Nie ma możliwości oznaczenia go jako błędu, ponieważ nie jest to błąd. W rzeczywistości może być bardzo przydatną funkcją języka.

(4)

Pytanie 47: Kiedy synteza właściwości jest obowiązkowa?

Gdy są zadeklarowane w protokołach Pytanie 48: Co to jest NSAssert?

Funkcja NSAssert służy do upewnienia się, że wartość jest taka, jaka powinna być. Jeśli asercja nie powiedzie się, oznacza to, że coś poszło nie tak, a więc aplikacja się kończy. Jednym z powodów, dla których warto użyć NSAssert, jest posiadanie funkcji, która nie będzie się zachowywać lub spowoduje bardzo złe skutki uboczne, jeśli jeden z przekazanych parametrów nie będzie dokładnie pewną wartością (lub zakresem wartości). W takim przypadku możesz umieścić NSAssert, aby upewnić się, że wartość jest zgodna z oczekiwaniami. Jeśli nie, coś jest naprawdę nie tak, więc aplikacja się kończy.

NSAssert może być bardzo przydatny do debugowania / testowania jednostkowego, a także gdy udostępniasz frameworki, aby powstrzymać użytkowników przed robieniem „złych” rzeczy.

Pytanie 49: Co to jest kategoria w systemie iOS?

Kategorie Objective-C pozwalają rozszerzyć istniejącą klasę o jakakolwiek metodę, którą uznasz za stosowną. Jest to bardzo przydatne do dodawania metod pomocniczych do innych klas, które pomagają parsować datę w sposób, który być może nie był zamierzony przez klasę. Możesz także użyć go do podzielenia własnych klas, aby mieć dużą klasę omni, która robi kilka rzeczy, możesz wybrać tylko te części, które chcesz, włączając tylko te kategorie.

Pytanie 50: Czego możesz użyć, aby dodać nową metodę do NSString?

W związku z poprzednim pytaniem odpowiedzią byłyby kategorie. Aby dodać nową metodę do NSString, odpowiedzią byłoby użycie kategorii. Na przykład:

@interface NSString (CategoryName) -(NSString *) aNewMethod;

@end

Pytanie 51: Jakie są Twoje preferencje podczas pisania interfejsów użytkownika: plików XIB, scenariuszy lub programowego UIView?

Istnieją argumenty wspierające każdy z różnych modeli. Byłoby zarozumiałe udawać, że ma ostateczną odpowiedź. Zamiast tego to pytanie ma na celu omówienie z kandydatem jego / jej sposobu myślenia i powodów, dla których preferuje jedną lub drugą alternatywę (lub który scenariusz im odpowiada).

Możliwa odpowiedź może odnosić zalety i wady każdego mechanizmu, na przykład:

Zalety plików XIB:

• Możesz szybko stworzyć interfejs użytkownika.

• Zapewnia bezpośrednią implementację małych aplikacji z minimalną liczbą ekranów.

• Możesz mieć osobne XIB dla różnych lokalizacji (tj. Języków lub krajów).

• Doskonale radzą sobie z układaniem elementów i wizualnym wykrywaniem przesunięć. Ułatwiają niewielkie modyfikacje układu.

Wady plików XIB:

(5)

• Trudno jest łączyć konflikty podczas pracy w środowisku zespołowym (trudne do porównania, scalenia i czytania).

• Bardzo dynamicznych widoków nie da się opisać jako XIB.

• Pod względem wydajności są one wolniejsze niż tworzenie widoków za pomocą kodu, ponieważ XIB należy odczytać z dysku i przeanalizować / przeanalizować.

• XIB-owi brakuje dostosowań, które można wykonać w kodzie, takich jak kwarc (cienie, okrągłe rogi).

• Trudniej jest je debugować (tzn. Jeśli zapomnisz nawiązać połączenie w Konstruktorze interfejsów lub wykonasz nieprawidłowe połączenie).

Zalety scenariuszy:

• Storyboardy są dobre dla aplikacji z małą lub średnią liczbą ekranów i stosunkowo prostymi wymaganiami dotyczącymi nawigacji między widokami.

• Możesz naśladować przepływ aplikacji, nie pisząc dużo, jeśli w ogóle, kodu.

Wady scenopisów:

• Scenopisy nie są kompatybilne z wersją wcześniejszą niż iOS 5, dlatego uniemożliwiają obsługę iOS 4.3.

• Trudno jest pracować równolegle w środowisku zespołowym, ponieważ wszyscy modyfikują ten sam plik.

• W tym samym kierunku połączenie konfliktowych scenariuszy w GIT będzie uciążliwe.

• W przypadku scenorysów ludzie napotkali błędy w Xcode (np. Konieczność częstego opróżniania folderu DerivedData z powodu niespójności).

Zalety widoków tworzonych programowo:

• Łatwiej jest łączyć konflikty i różnicować linie kodu niż w przypadku pliku XIB.

• Możesz prześledzić kod podczas debugowania i nie musisz patrzeć na Konstruktora interfejsów

• Pod względem wydajności oferuje szybsze tworzenie widoków niż XIB.

• Tworzenie widoków za pomocą kodu daje większą kontrolę i swobodę.

Wady związane z widokami utworzonymi programowo:

• Trudniej jest wyobrazić sobie interfejs użytkownika i uzyskać mentalny obraz tego, jak będzie wyglądać, jeśli całe tworzenie interfejsu użytkownika nie nastąpi w jednym miejscu w kodzie.

• Nie możesz wizualnie pozycjonować elementów, przez co układanie widoków zajmuje więcej czasu.

• Przyjęcie nowych członków zespołu projektowego dłużej, aby zrozumieć przepływ aplikacji i nawigację

Pytanie 52: Jak bezpiecznie przechowujesz prywatne dane użytkownika offline na urządzeniu? Jakie inne najlepsze praktyki bezpieczeństwa należy podjąć?

Nie ma właściwej odpowiedzi na te pytania, ale są świetnym sposobem, aby zobaczyć, jak wiele osób przekopało się w zabezpieczeniach iOS. Szczególnie w przypadku przeprowadzania wywiadów z

(6)

bankami lub innymi podmiotami, w których bezpieczeństwo jest najważniejsze, należy się spodziewać tego rodzaju pytań. Nie mam ścisłych wytycznych dotyczących odpowiedzi, ale należy omówić co najmniej kilka z następujących tematów:

• Jeśli dane są bardzo wrażliwe, nigdy nie powinny być przechowywane offline na urządzeniu, ponieważ wszystkie urządzenia można zgrywać.

• Keychain to jedna z opcji bezpiecznego przechowywania danych. Jednak jego szyfrowanie opiera się na kodzie PIN urządzenia. Użytkownicy nie muszą ustawiać kodu PIN, więc w niektórych sytuacjach dane mogą nawet nie zostać zaszyfrowane. Ponadto kody PIN użytkowników mogą zostać łatwo zhakowane.

• Lepszym rozwiązaniem jest użycie czegoś takiego jak SQLCipher, który jest w pełni zaszyfrowaną bazą danych SQLite. Klucz szyfrowania może być wymuszony przez aplikację i oddzielony od kodu PIN użytkownika.

• Komunikuj się tylko ze zdalnymi serwerami przez SSL / HTTPS.

• Jeśli to możliwe, zaimplementuj przypinanie certyfikatów w aplikacji, aby zapobiec atakom typu man- in-the-middle na publiczne Wi-Fi.

• Usuń wrażliwe dane z pamięci, nadpisując je.

• Upewnij się, że wszystkie sprawdzanie poprawności przesyłanych danych odbywa się również po stronie serwera.

Pytanie 53: Czy kiedykolwiek pracowałeś z NSOperationQueue? Możesz to wyjaśnić?

Jednym ze sposobów wykonywania operacji jednocześnie w systemie iOS są klasy NSOperation i NSOperationQueue. NSOperationQueue reguluje równoczesne wykonywanie operacji. Działa jak kolejka priorytetowa, dzięki czemu operacje są wykonywane w przybliżeniu w trybie FIFO, przy czym te o wyższym priorytecie (NSOperation.queuePriority) wyprzedzają te o niższym priorytecie.

NSOperationQueue może również ograniczyć maksymalną liczbę jednoczesnych operacji do wykonania w dowolnym momencie, używając właściwości maxConcurrentOperationCount.

Pytanie 54: Jak serializować macierz na dysk?

Kluczowymi klasami, które należy zastosować, są klasa abstrakcyjna o nazwie NSCoder wraz z protokołem o nazwie NSCoding. Razem zostały one zaprojektowane w celu ujednolicenia procesu konwersji klas do iz serializowanych formatów danych. Prawdopodobnie natknąłeś się na NSCoding, jeśli kiedykolwiek korzystałeś z plików NIB lub scenorysów, ponieważ NSCoding to podstawowy mechanizm, którego używa Cocoa do ładowania widoków i kontrolerów widoków z NIB.

Pytanie 55: Jak działa typ instancet i jak jest użyteczny?

instancetype jest kontekstowym słowem kluczowym, którego można użyć jako typu wyniku w celu zasygnalizowania, że metoda zwraca powiązany typ wyniku. Na przykład:

@interface Person

+ (instancetype)personWithName:(NSString *)name;

@end

(7)

Aby ocenić krzywą uczenia się kandydata, kolejnym pytaniem może być omówienie podobieństw i różnic między używaniem instancetype i id. typ instancet, w przeciwieństwie do id, może być używany tylko jako typ wyniku w deklaracji metody.

Pytanie 56: Co oznacza termin odbicie?

Odbicie odnosi się do kodu, który jest w stanie skontrolować siebie lub inny kod w systemie. Cel C ma odbicie (i klasy abstrakcyjne). Dalsze pytanie do potencjalnego kandydata brzmiałoby: kiedy refleksja odpowiada naszym potrzebom?

Pytanie 57: Czym są obiekty warstwowe i co reprezentują?

Obiekty warstw to obiekty danych reprezentujące treść wizualną. Obiekty warstw są używane przez widoki do renderowania ich zawartości. Do interfejsu można również dodawać obiekty warstwy niestandardowej, aby wdrażać złożone animacje i inne rodzaje wyrafinowanych efektów wizualnych.

Pytanie 58: Jaka jest różnica między wartościami surowymi a wartościami powiązanymi w szybkich wyliczeniach?

Surowe wartości dotyczą sytuacji, gdy każdy przypadek w wyliczeniu jest reprezentowany przez wartość ustawioną w czasie kompilacji. Są podobne do stałych, na przykład:

enum E: Int {

case A // if you don't specify, IntegerLiteralConvertible-based enums start at 0

case B }

W takim przypadku A będzie miało wartość 0, a B będzie miało wartość 1. Powiązane wartości są bardziej podobne do zmiennych, powiązanych z jednym z przypadków wyliczeniowych

enum E { case A(Int) case B case C(String) }

Pytanie 59: Co robi @synthesize?

@synthesize tworzy getter i setter dla zmiennej. To pozwala podać niektóre atrybuty dla swoich zmiennych, a kiedy @synthesize tę właściwość do zmiennej, generujesz getter i seter dla zmiennej.

Nazwa właściwości może być taka sama jak nazwa zmiennej. Czasami ludzie chcą, aby był inny, aby używać go w init lub dealloc lub gdy parametr jest przekazywany z tą samą nazwą zmiennej.

Pytanie 60: Jakie typy kolekcji są dostępne w Swift?

W Swift typy kolekcji występują w dwóch odmianach: Array i Dictionary.

Tablica: Możesz utworzyć tablicę jednego typu lub tablicę z wieloma typami. Swift zazwyczaj woli te pierwsze. Poniżej znajduje się przykład tablicy jednego typu:

(8)

var cardName: [String] = [„Robert”, „Lisa”, „Kevin”]

Aby dodać tablicę, musisz użyć indeksu dolnego println (CardNames [0]).

Słownik: jest podobny do tabeli skrótów w innym języku programowania. Słownik umożliwia przechowywanie par klucz-wartość i uzyskiwanie dostępu do wartości przez podanie klucza, jak w poniższym przykładzie:

var cards = [„Robert”: 22, „Lisa”: 24, „Kevin”: 26]

Pytanie 61: Co to jest niestandardowy operator w Swift?

Niestandardowe operatory w Swift są przydatne, gdy chcesz całkowicie nowego operatora, zwykle dlatego, że funkcjonalność jest tak wyjątkowa, że żaden z obecnych operatorów nie ma sensu. Kolejne interesujące pytanie dla potencjalnego kandydata dotyczy tego, jakie typy niestandardowych operatorów istnieją w Swift. Powinien być w stanie wymyślić następującą listę:

Prefiks: Jednoargumentowy (działający na jednej wartości) operator, który znajduje się tuż przed wartością, na której działa.

Postfiks: Unary operator, który jest tuż po wartości, na której działa.

Infix: Operator binarny (działający na dwóch wartościach) umieszczony między dwiema wartościami, na których działa.

W ramach ćwiczenia kodującego kandydat mógłby napisać niestandardowy operator dla konkretnego problemu.

Pytanie 62: Jakich problemów jesteś świadomy podczas pracy z blokami?

Bloki w iOS mogą wprowadzać cykle przechowywania w określonych okolicznościach. Może się to zdarzyć, zwłaszcza jeśli nie uchwycisz silnych cykli referencyjnych podczas rejestrowania siebie.

Pytanie 63: Co to jest rozszerzenie iOS?

Szybkie rozszerzenia w zasadzie dodają metody do istniejących typów (klas, struktur i wyliczeń), tylko w kilku różnych „smakach”. Poniższy kod tworzy rozszerzenie klasy UIColor. Zauważ, że użytym tutaj słowem kluczowym jest rozszerzenie, a nie klasa, struktura lub wyliczenie.

struct, or enum.

extension UIColor: ImportantProtocol, MoreImportantCustomProtocol { }

Pytanie 64: Co to jest piaskownica aplikacji?

App Sandbox to technologia kontroli dostępu zapewniana w OS X, wymuszana na poziomie jądra.

Został zaprojektowany tak, aby zawierał uszkodzenia systemu i danych użytkownika, jeśli aplikacja zostanie naruszona. Aplikacje dystrybuowane za pośrednictwem Mac App Store muszą adoptować piaskownicę aplikacji. Aplikacje podpisane i dystrybuowane poza Mac App Store za pomocą identyfikatora programisty mogą (i w większości przypadków powinny) także korzystać z piaskownicy aplikacji. Ze względów bezpieczeństwa iOS umieszcza każdą aplikację (w tym jej preferencje i dane) w

(9)

piaskownicy w czasie instalacji. Piaskownica to zestaw precyzyjnych elementów sterujących, które ograniczają dostęp aplikacji do plików, preferencji, zasobów sieciowych, sprzętu i tak dalej. W ramach procesu piaskownicy system instaluje każdą aplikację we własnym katalogu piaskownicy, który działa jako dom aplikacji i jej danych.

Pytanie 65: Jak tworzysz aplikacje na iPada i iPhone'a?

Jeśli wybierzesz rodzinę urządzeń jako uniwersalną, podczas tworzenia nowego projektu otrzymasz opcje przygotowania różnych plików XIB lub scenariuszy na iPhone'a i iPada. Na poziomie kodu możesz sprawdzić urządzenie lub użyć właściwej nazwy podczas przydzielania. W czasie wykonywania może być konieczne załadowanie niektórych zasobów, w zależności od tego, czy urządzeniem jest iPhone, czy iPad. Z perspektywy kodu programistycznego możesz postępować w następujący sposób (w Swift):

switch UIDevice.currentDevice().userInterfaceIdiom { case .Phone:

// It's an iPhone case .Pad:

// It's an iPad case .Unspecified:

//

}

Pytanie 66: Jakie są różne tryby tła w iOS?

• Odtwarzaj audio: aplikacja może kontynuować odtwarzanie i / lub nagrywanie dźwięku w tle.

• Odbieraj aktualizacje lokalizacji: aplikacja może nadal odbierać połączenia zwrotne wraz ze zmianą lokalizacji urządzenia.

• Wykonywanie zadań o ograniczonej długości: jest to ogólny przypadek „cokolwiek”, w którym aplikacja może uruchamiać dowolny kod przez ograniczony czas.

• Przetwarzaj pobieranie zestawu kiosku: specyficzne dla aplikacji kiosku, aplikacja może pobierać treści w tle.

• Zapewnianie usług VoIP: aplikacja może uruchamiać dowolny dowolny kod w tle. Oczywiście Apple ogranicza jego użycie, więc twoja aplikacja musi również świadczyć usługi VoIP.

Cytaty

Powiązane dokumenty

Poniżej omówione zostaną przede wszystkim odwołania do tekstów istniejących wyłącznie w obrębie świata utworu; nawiązania takie, jak się zdaje, często służą mniej

3-5-punktów -wszystkie elementy treści podjęte ale ilośc błędów uniemożliwia zrozumienie informacji przez czytelnika. 0-2-punkty- informacja o spotkaniu zawarta, ale

• Na kartkę e-papieru można załadować cały zasób BZ oraz wiele innych tytułów gazet i książek, który łatwo zaktualizujemy dzięki podłączeniu do Internetu. podłączeniu

Profesor Krzysztof Simon, kierownik Kliniki Chorób Zakaźnych i Hepatologii Uniwersytetu Medycznego we Wrocławiu, przyznaje, że młodzi ludzie w stolicy województwa

Mechanizm leżący u  podstaw podwyższonego ciśnienia tętniczego u  osób z  pierwotnym chrapaniem nie jest w pełni wyjaśniony, ale może mieć związek ze zwiększoną

Warto zwrócić uwagę, że miłość jawi się jako siła, której nie można się przeciwstawić, jest ona ponad człowiekiem.. Uczucie ma wymiar nadprzyrodzony, a

- dopóki nie mamy właściwej skali trudno jest usunać obserwacje odstające - może we właściwej skali te dane się symetryzują. - do chunka można dodać opcję warning=FALSE

Zaznacz TAK, jeśli zdanie jest prawdziwe, a NIE, jeśli zdanie jest fałszywe.. Okres zbioru ogórków trwa krócej od okresu, kiedy można