//
//  Determining_if_Instance_or_Class_Methods_are_AvailableAppDelegate.m
//  Determining if Instance or Class Methods are Available
//
//  Created by Vandad Nahavandipoor on 08/08/2011.
//  Copyright 2011 Pixolity Ltd. All rights reserved.
//

#import "Determining_if_Instance_or_Class_Methods_are_AvailableAppDelegate.h"

@implementation Determining_if_Instance_or_Class_Methods_are_AvailableAppDelegate

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  // Miejsce na przeprowadzenie własnej konfiguracji po uruchomieniu aplikacji.
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];
  
  /* 1 */
//  NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
//                           @"Element 1",
//                           @"Element 4",
//                           @"Element 2",
//                           @"Element 5",
//                           @"Element 3", nil];
//  
//  NSLog(@"Tablica = %@", array);
//  
//  if ([NSArray instancesRespondToSelector:@selector(sortUsingComparator:)]){
//    
//    /* Do posortowania tablicy użyj metody egzemplarza sortUsingComparator:. */
//    
//  }
//  else if ([NSArray instancesRespondToSelector:
//            @selector(sortUsingFunction:context:)]){
//    
//    /* Do posortowania tablicy użyj metody egzemplarza sortUsingFunction:context:. */
//    
//  }
//  else {
//    
//    /* Kod wykonujący inne operacje. */
//    
//  }
  
  /* 2 */
//  NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
//                           @"Element 1",
//                           @"Element 4",
//                           @"Element 2",
//                           @"Element 5",
//                           @"Element 3", nil];
//  
//  NSLog(@"Tablica = %@", array);
//  
//  if ([array respondsToSelector:@selector(sortUsingComparator:)]){
//    
//    /* Do posortowania tablicy użyj metody egzemplarza sortUsingComparator:. */
//    
//  }
//  else if ([array respondsToSelector:@selector(sortUsingFunction:context:)]){
//    
//    /* Do posortowania tablicy użyj metody egzemplarza sortUsingFunction:context:. */
//    
//  }
//  else {
//    
//    /* Kod wykonujący inne operacje. */
//    
//  }
  
  /* 3 */
  NSArray *array = nil;
  
  if ([NSArray respondsToSelector:@selector(arrayWithObjects:count:)]){
    NSString *strings[4];
    strings[0] = @"Ciąg tekstowy 1";
    strings[1] = @"Ciąg tekstowy 2";
    strings[2] = @"Ciąg tekstowy 3";
    strings[3] = @"Ciąg tekstowy 4";
    
    array = [NSArray arrayWithObjects:strings
                                count:4];
  }
  else if ([NSArray respondsToSelector:@selector(arrayWithObjects:)]){
    array = [NSArray arrayWithObjects:
             @"Ciąg tekstowy 1",
             @"Ciąg tekstowy 2",
             @"Ciąg tekstowy 3",
             @"Ciąg tekstowy 4",
             nil];
  }
  else {
    /* Kod wykonujący inne operacje. */
  }
  
  NSLog(@"Tablica = %@", array);
  
  return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
  /*
   Ta metoda jest wywoływana, gdy aplikacja przechodzi ze stanu aktywnego do nieaktywnego. Może być wywołana w określonych sytuacjach (na przykład w chwili odbywania rozmowy telefonicznej lub po otrzymaniu wiadomości SMS) bądź kiedy użytkownik kończy działanie aplikacji. Metoda rozpoczyna proces przejścia do stanu pozostania w tle. Tę metodę można wykorzystać do wstrzymania wykonywania bieżących zadań, wyłączenia liczników czasu, zmniejszenia liczby klatek generowanych przez OpenGL ES. W grach ta metoda powinna być użyta do wstrzymania gry (pauza).
   */
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  /*
   Tę metodę należy wykorzystać do zwolnienia zasobów współdzielonych, zapisania danych użytkownika, wyzerowania liczników czasu oraz do przechowania takiej ilości informacji o stanie, która pozwoli na przywrócenie aplikacji do stanu bieżącego. Jeżeli aplikacja obsługuje działanie w tle, w chwili kończenia działania należy wywołać tę metodę zamiast applicationWillTerminate:.
   */
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
  /*
   Ta metoda jest wywoływana podczas przechodzenia aplikacji ze stanu aktywnego do działania w tle. Można więc tutaj wycofać wiele zmian wprowadzonych w chwili przechodzenia do stanu działania w tle.
   */
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
  /*
   W tej metodzie można wznowić działanie zadań zatrzymanych (lub nieuruchomionych), gdy aplikacja była nieaktywna. Jeżeli aplikacja znajdowała się w trybie działania w tle, w metodzie można przeprowadzić odświeżenie interfejsu użytkownika.
   */
}

- (void)applicationWillTerminate:(UIApplication *)application
{
  /*
   Ta metoda jest wywoływana, gdy działanie aplikacji ma zostać zakończone. Zapoznaj się z opisem metody applicationDidEnterBackground:.
   */
}

@end
