//
//  Allocating_and_Making_Use_of_ArraysAppDelegate.m
//  Allocating and Making Use of Arrays
//
//  Created by Vandad Nahavandipoor on 06/07/2011.
//  Copyright 2011 Pixolity Ltd. All rights reserved.
//

#import "Allocating_and_Making_Use_of_ArraysAppDelegate.h"

@implementation Allocating_and_Making_Use_of_ArraysAppDelegate

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // Miejsce na przeprowadzenie własnej konfiguracji po uruchomieniu aplikacji.
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  [self.window makeKeyAndVisible];
  
  /* 1 */
//NSString *stringObject = @"Mój ciąg tekstowy";
//NSNumber *signedNumber = [NSNumber numberWithInteger:-123];
//NSNumber *unsignedNumber = [NSNumber numberWithUnsignedInteger:123];
//
//NSArray *array = [[NSArray alloc] initWithObjects:
//                  stringObject,
//                  signedNumber,
//                  unsignedNumber];
//
//NSLog(@"array = %@", array);
  
  /* 2 */
//NSString *stringObject = @"Mój ciąg tekstowy";
//NSNumber *signedNumber = [NSNumber numberWithInteger:-123];
//NSNumber *unsignedNumber = [NSNumber numberWithUnsignedInteger:123];
//
//NSArray *array = [NSArray arrayWithObjects:
//                  stringObject,
//                  signedNumber,
//                  unsignedNumber, nil];
//  
//NSLog(@"array = %@", array);
  
  /* 3 */  
//NSString *stringObject = @"Mój ciąg tekstowy";
//NSNumber *signedNumber = [NSNumber numberWithInteger:-123];
//NSNumber *unsignedNumber = [NSNumber numberWithUnsignedInteger:123];
//  
//NSArray *array = [NSArray arrayWithObjects:
//                  stringObject,
//                  signedNumber,
//                  unsignedNumber,nil];
//
//NSUInteger counter = 0;
//for (counter = 0;
//     counter < [array count];
//     counter++){
//  
//  id object = [array objectAtIndex:counter];
//  NSLog(@"Object = %@", object);
//  
//}
  
  /* 4 */
//NSString *stringObject = @"Mój ciąg tekstowy";
//NSNumber *signedNumber = [NSNumber numberWithInteger:-123];
//NSNumber *unsignedNumber = [NSNumber numberWithUnsignedInteger:123];
//
//NSArray *array = [NSArray arrayWithObjects:
//                  stringObject,
//                  signedNumber,
//                  unsignedNumber,nil];
//
//for (id object in array){
//  NSLog(@"Object = %@", object);
//}

  /* 5 */
//NSString *stringObject = @"Mój ciąg tekstowy";
//NSNumber *signedNumber = [NSNumber numberWithInteger:-123];
//NSNumber *unsignedNumber = [NSNumber numberWithUnsignedInteger:123];
//
//NSArray *anotherArray = [[NSArray alloc] initWithObjects:
//                         @"String 1",
//                         @"String 2",
//                         @"String 3", nil];
//
//NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
//                         stringObject,
//                         signedNumber, nil];
//
//[array addObject:unsignedNumber];
//[array removeObject:signedNumber];
//[array addObjectsFromArray:anotherArray];
//
//for (id object in array){
//  NSLog(@"Obiekt = %@", object);
//}
  
  /* 6 */
//  NSArray *myArray = [[NSArray alloc] initWithObjects:
//                      @"Ciąg tekstowy 1",
//                      @"Ciąg tekstowy 2",
//                      @"Ciąg tekstowy 3",
//                      @"Ciąg tekstowy 4", nil];
//  
//  [myArray enumerateObjectsUsingBlock:
//   ^(__strong id obj, NSUInteger idx, BOOL *stop) {
//    
//     //NSLog(@"Obiekt = %@", obj);
//     
//  }];
    

  /* 7 */
  NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:
                      @"Ciąg tekstowy 2",
                      @"Ciąg tekstowy 4",
                      @"Ciąg tekstowy 1",
                      @"Ciąg tekstowy 3", nil];
  [myArray sortUsingComparator:
   ^NSComparisonResult(__strong id obj1, __strong id obj2) {
     
    NSString *string1 = (NSString *)obj1;
    NSString *string2 = (NSString *)obj2;
    
    return [string1 compare:string2];
    
  }];
  
  NSLog(@"myArray = %@", myArray);

  NSLog(@"%d", [@"Ciąg tekstowy 3" compare:@"Ciąg tekstowy 1"]);
  
  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
