Androidi OS
Androidi OS
26. Czy w systemie musi istnieć tylko jeden czujnik danego typu?
- nie (chyba)
- http://stackoverflow.com/questions/14750902/two-sensors-available-for-same-type-
in-android
- http://stackoverflow.com/questions/9712008/multiple-internal-sensors-of-same-type
27. Co oznacza, gdy metoda getDefaultSensor zwraca null?
- urządzenie nie jest wyposażone w sensor zdefiniowany w parametrze metody
28. Jaki typ reprezentują dane odczytywane z czujnika?
- tablica floatów
29. Jaką wartość modułu zwróci akcelerometr w przypadku, gdy telefon leży nieruchomo? - -
- pomiędzy 9 a 10, ze względu na przyśpieszenie ziemskie
30. Jakie uprawnienia musi mieć aplikacja, żeby sprawdzić stan sieci Internet?
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
iOS
1. Różnica między weak a strong
Strong powoduje zwiększenie retain count‟a obiektu, czyli nasza nowa zmienna
“retainuje” obiekt co zapewnia nam, że obiekt nie zostanie zwolniony przez ARC tak długo
jak będziemy na niego wskazywać. Weak nie retainuje obiektu, co oznacza, że zmienna
może być nil gdy ARC zwolni instancje.
● ViewDidLoad - Called when you create the class and load from
xib/storyboard. Great for initial setup and one-time-only work.
● ViewWillAppear - Called right before your view appears, good for
hiding/showing fields or any operations that you want to happen every
time before the view is visible. Because you might be going back and
forth between views, this will be called every time your view is about to
appear on the screen.
● ViewDidAppear - Called after the view appears - great place to start an
animations or the loading of external data from an API.
● ViewWillDisappear/DidDisappear - Same idea as
ViewWillAppear/ViewDidAppear.
● ViewDidUnload/ViewDidDispose - In Objective C, this is where you do your
clean-up and release of stuff, but this is handled automatically so not
much you really need to do here.
Obiekt ref1 nie zostanie zwolniony dopóki wszystkie 3 zmienne będą nil.
john!.apartment = apartment
apartment!.person = john
W tym przykładzie oba obiekty wskazują na siebie dlatego ARC nie będzie
mógł zwolnić żadnego z tych obiektów gdyż retain count zawsze będzie większy od 0.
Strong reference cycle powoduje wyciek pamięci.
8. Czym jest NSAutoreleasePool
https://developer.apple.com/reference/foundation/nsautoreleasepool
Nonatomic
nonatomic is used for multi threading purposes. If we have set the nonatomic attribute at
the time of declaration, then any other thread wanting access to that object can access it
and give results in respect to multi-threading.
Assign
Assign is somewhat the opposite to copy. When calling the getter of an assign property,
it returns a reference to the actual data. Typically you use this attribute when you have a
property of primitive type (float, int, BOOL...)
Strong
This is a good website to learn about strong and weak for iOS
5.http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1
Weak
weak is similar to strong except that it won't increase the reference count by 1. It
does not become an owner of that object but just holds a reference to it. If the object's
reference count drops to 0, even though you may still be pointing to it here, it will be
deallocated from memory.
Wywołanie metody przy użyciu „try!‟ spowoduje crash aplikacji jeżeli zwróci ona
wyjątek. Wywołanie to działa na zasadzie „do or die‟ ponieważ sytuacja jest analogiczna gdy
próbujemy dostać się do zmiennej która jest nil używając unwrapped optional - program
zakończy się crashem.
let result = try! something() // jeżeli będzie wyjątek - CRASH
Wywołanie metody przy użyciu „try?‟ jest podobne do tego z „try‟. Różnica jest taka,
że stosując tutaj symbol optional‟a nie mamy dokładnej informacji na temat wyjątku jaki
wyrzuciła nam dana metoda. Stosuje się najczęściej gdy skupiamy się na tym czy dana
metoda działa lub nie, a nie na tym co spowodowało jej błąd.
if let result = try? something() {
// wywołanie się udało
} else {
// error :(
}
Ten sam przykład przy użyciu guard‟a :
guard let result = try? something() {
//error :(
}
//wywołanie się udało
11. Czym jest kategoria i po co ją używamy ?
Jest to sposób na dodanie dodatkowych metod do klasy bez bezpośredniego
rozszerzania jej implementacji. Szczególnie przydatne gdy chcemy rozbudować możliwości
klasy której implementacji nie posiadamy np. NSString.
20. Czym jest Memory Footprint i jakiego narzędzia użyjemy do jego zbadania ?
https://developer.apple.com/library/prerelease/content/technotes/tn2434/_index.html#//apple
_ref/doc/uid/DTS40017252
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Article
s/formatSpecifiers.html
25. Jak się tworzy, dodaje, modyfikuje i usuwa w obrębie kontenerów klasy NSArray
oraz NSDictionary?
NSArray:
- dodawanie (potrzebny NSMutableArray):
NSMutableArray *shoppingList = [@[@"Eggs", @"Milk"] mutableCopy];
[shoppingList addObject:flour];
27. Która klasa w języku Objective-C jest klasą bazową dla wszystkich klas?
NSObject
@end
@implementation XYZ
@end
@end
31. W jaki sposób uruchamia się nowe activity z poziomu innego?
//przeslanie danych do destination controllera
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"showDetailSegue"]){ ViewControllerB
*controller = (ViewControllerB *)segue.destinationViewController;
controller.isSomethingEnabled = YES; } }
-(void)myButtonMethod {
- GPS
- Żyroskop
- Akcelometer
- Magnetometer